- 1. AWS EC2にてPHPのRedis拡張機能を有効化する。
- 2. 【PHP】チャット機能の自作!Ajaxでスムーズな更新も実現
- 3. Docker環境でDBに接続するとcould not find driverが出たときの対処方法
- 4. 【PHP】2つの時間帯が重複しているかをチェックする
- 5. PHPからSQLに接続する
- 6. [PHP] データベースから取得した文字列などの定型文への、動的な値・変数の埋め込み/置き換え
- 7. PHPでアップロードできるファイルの上限値を変更する
- 8. PHPで配列を関数の返り値として使ってみましょう!
- 9. [Laravel] SQLログをいい感じに整形して出力させる
- 10. PHPで可変長引数を使ってみましょう!
- 11. PHPで配列の中の配列にアクセスしましょう!
- 12. 可変長の配列の行列を入れ替える方法
- 13. paiza問題集 スキルチェック過去問題 Cランク野球の審判
- 14. PHPでforeachを使って配列を操作してみましょう!
- 15. FormRequestのバリデーションルールを状況に応じて変えたい
- 16. PHP配列のキーを指定してみましょう!
- 17. 外部システムから投入されるSQSキューをLaravelで監視処理する
- 18. PHPで配列を使ってみましょう!
- 19. PHP関数の型の指定方法について…
- 20. WordPressのメニューのli要素、a要素を現実的なHTMLに補正する
AWS EC2にてPHPのRedis拡張機能を有効化する。
PHPのREDIS拡張機能を追加する。
手順はシンプル
・インストール
・有効化**※以下、インストール**
インストールにはpeclを利用する。## peclインストール
“`
wget http://pear.php.net/go-pear.phar
php go-pear.phar
“`インストール時にオプション指定をいくつか設定できるが、
筆者はデフォルト設定にしたためEnterを押した。## PATHの追加
“`
export PATH=$PATH:/home/ec2-user/pear/bin
“`## redisのインストール
“`
sudo pecl install redis
“`**※以下、有効化**
## php.iniに以下を追加
“`
extension=redis.so
“`## Apache再起動
“`
sudo service httpd restart
“`# 参考
https://pear.php.net/manual/en/installation.getting.php
https://se
【PHP】チャット機能の自作!Ajaxでスムーズな更新も実現
PHPで作れる定番機能の1つ「チャット機能」を自作してみました。
完成までの流れと苦労したポイント、どんなふうに作っていったかをまとめてみました。
#チャット機能を自作
今回使ってみたのはこのような感じのチャットです。
[自作チャット](https://portfolio.amefure.com/chatsystem/chat.php#chat-area)チャット機能を作ることができればPHPのあらかたのテクニックが学習できるかなと思い、作成することにしました。
##要件定義
まず最初にチャットを実現するために必要な機能を洗い出します。
チャットで欲しい機能
– チャットを送信時に時間とアイコンを表示
– チャットログを蓄積、表示
– チャットログが増えたら自動更新
– デモなのでユーザー切り替え
– チャットログリセット必要になる言語
– HTML/CSS(元枠)
– PHP(データ操作)
– JavaScript(自動更新)##設計
実現方法
– ログはJSONファイルに格納
– ログが増えたかどうかはファイルサイズで判断
– ajaxを使って更新時の
Docker環境でDBに接続するとcould not find driverが出たときの対処方法
## DBに接続する処理を作成
“`php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
“`
## 接続すると下記のエラーが出力された
“`bash
could not find driver
“`
### ドライバが見つからないようなので現在のドライバ
【PHP】2つの時間帯が重複しているかをチェックする
## どんなときつかうか
予約システムつくるとき、よく使う。例えば予約したい時間帯に**「空きがあるがどうか」**を調べたいときなど。### 重複している時間帯をチェックするプログラム
“`index.php
/*
* @param int $startTimeTarget 比較対象元の時間範囲開始時間
* @param int $endTimeTarget 比較対象元の時間範囲終了時間
* @param int $startTimeSource 比較対象の時間範囲開始時間
* @param int $endTimeSource 比較対象の時間範囲開始時間
* @return bool 重複している場合はtrueを返す
*/
public function isTimeDuplication($startTimeTarget, $endTimeTarget,
$startTimeSource, $endTimeSource)
{
$startTimeTarget = new DateTime($startTimeTarget);
$endTimeTar
PHPからSQLに接続する
記録用
##準備
###DBに接続する読み込めば接続できるファイルを作っておく
“`php:dbh.php
false, // 静的プレースホルダにする //セキュリティの強化
\PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, // 複文を禁
[PHP] データベースから取得した文字列などの定型文への、動的な値・変数の埋め込み/置き換え
文章・定型文中への、動的な値・変数の埋め込みを行うには、結論から言うと、“`str_replace“` や “`mb_ereg_replace“` を使用して文字列を置き換えて表現します。
例えばメールの定型文や、記事のテンプレートなど、何かしらの文字列・文章がすでにある中へ、日時に応じて、ユーザーに応じてなど、動的な値をその時々で変えながら埋め込みたいということがあると思います。
下記はメッセージテンプレートがDBに保存してあると仮定して、そのテンプレートのタイトルや本文、日付部分などをメッセージ閲覧時の情報で置き換えるサンプルソースとなります。
“`php
PHPでアップロードできるファイルの上限値を変更する
# 背景
PHP×nginxの案件でファイルをうまくアップロードできないことがあり、アップロードする際に許容上限に引っかかっていることが判明。
PHPとnginxの設定をそれぞれ変更してあげる必要があったので、その手順を記載。# PHPの設定を変更
## PHPの設定を確認
まずはphpinfo()でPHPの設定を確認。
以下内容のファイルをブラウザで表示できる任意のディレクトリ下に設置して、PHPの設定を確認。“`phpinfo.php
PHPで配列を関数の返り値として使ってみましょう!
#関数の返り値に配列を渡す
返り値を配列にして仮引数に渡します。以下の sum 関数があったとします。
“`php:index.php
ターミナルに以下を入力します。
“`
~$ php index.php
“`合計が出力されました。
“`
~ $ php index.php
6~ $
“`3つの合計の平均値も一緒に出力されるように、
返り値を配列にします。
3つの合計値と、 合計値を個数で割るようにします。
“`php:index.php
[Laravel] SQLログをいい感じに整形して出力させる
# 概要
webアプリケーションを開発する際、アプリケーションが実行したSQLクエリの確認は欠かせません。ロギング周りの調整は開発の初期の段階でアプリケーションに仕込むことがほとんどだと思います。
今回は、LaravelでSQLログをいい感じに整形して出力する方法を紹介します。# サービスプロバイダを作る
“`shell
php artisan make:provider DataBaseQueryLoggerServiceProvide
“`### app.phpに登録する
“`config/app.php
‘providers’ = [
//
App\Providers\DataBaseQueryLoggerServiceProvider::class,
],
“`できたファイルをこんな感じにする。
“`app/Providers/DataBaseQueryLoggerServiceProvide.php
PHPで可変長引数を使ってみましょう!
#可変長引数
渡された引数が何個になっても処理してくれる可変長引数を、foreachと一緒に使います。
以下の sum 関数があったとします。
引数に可変長引数の 「 … $ numbers 」を入れておきます。
foreach で $numbers の中身を一つづつ取り出して、
$total にプラスしていきます。
$total を …$numbersの仮引数に返します。
“`php:index.php
echo sum (1, 2, 3) . PHP_EOL ; で実引数を渡します。echo sum (4, 5, 6, 7
PHPで配列の中の配列にアクセスしましょう!
#配列の中の配列
配列を、他の配列の中で使ってみます。以下の配列があったとします。
$scores の配列の中に、 $numbers配列を入れています。
“`php:index.php
ターミナルに以下を入力します。
“`
~$ php index.php
“`配列の中に配列が入った状態で表示されます。
“`
~ $ php index.php
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => Array
(
[0] => 4
[1] => 5
)[4] => 6
)
~ $
“`そのまま連続で入れ込みたい場合は、
配列の前に 「 .
可変長の配列の行列を入れ替える方法
# 概要
授業で課題で出ていて調べても対処法がなかったので残しておきます。
以下に数字がインデックスになっており、0からインデックスが始まる一般的な配列の行列変換のコードを残しておきます。# コード
“`php
function matrix_replacement($arr)
{
$result = [];
for ($i = 0; $i < count($arr); $i++) { $result[] = array_column($arr, $i); } return $result; } ```
paiza問題集 スキルチェック過去問題 Cランク野球の審判
初めてqiitaで何を書けばいいのかわからないので、paizaの演習問題を書いてみる。
要件
標準入力で 「ストライク」か「ボール」が入力される
ストライクが入力され、かつストライクが1、2の時は「strike!]
ボールが入力され、かつボールが1~3の時は「ball!」
ストライクが入力され、かつストライクが3つの時は「out!」
ボールが入力され、かつボールが4つの時は「four ball!」
ただし、バッターはバットを振らないこと前提“`php:yakiu.php
PHPでforeachを使って配列を操作してみましょう!
#foreach
配列の要素を、foreachを使って1つ1つ取り出してみます。
“`php:index.php
1,
‘2番目’ => 2,
‘3番目’ => 3,
];foreach ($scores as $score) {
echo $score . PHP_EOL;
}
“`以下をターミナルに入力します。
“`
~$ php index.php
“`1つずつ出力されました。
“`
~ $ php main.php
1
2
3
~ $
“`キーも一緒に取り出してみます。
$key => 追加します。
“`php:index.php
1,
‘2番目’ => 2,
‘3番目’ => 3,
];foreach ($scores as $key => $score) {
echo $key . ‘ は ‘ . $scor
FormRequestのバリデーションルールを状況に応じて変えたい
Laravelで、入力フォームのバリデーション用に、FormRequestクラスを継承するEmployeeRequestクラスを作成しました。
EmployeeRequestクラスは、コントローラのstoreメソッド(追加処理)とupdateメソッド(更新処理)に DI して使います。ですが、`store`と`update`では、バリデーションルールにちょっとだけ違いがありました。
ルールの違いをコントローラ側で意識したくありません。“`PHP:EmployeeController@store
/**
* 追加処理(新規入力フォームの登録ボタンで呼び出される)
*/
public function store(EmployeeRequest $request) {
Employee::create($request->all());
return redirect()->route(‘employee’);
}
“`“`PHP:EmployeeController@update
/**
* 更新処理(編集フォームの更新ボタンで呼び出される)
*/
publ
PHP配列のキーを指定してみましょう!
#配列
以下の配列を var_dump と print_r で表示してみます。
“`php:index.php
ターミナルに以下を実行します
“`
~$ php index.php
“`
var_dump は要素数と値の型を表示してくれて、print_r は字下げして見やすくしてくれます。
“`
~ $ php index.php
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
Array
(
[0] => 1
[1] => 2
[2] => 3
)
~ $
“`ではこの 0、 1、 2 のインデックス番号を好きなキーに置き換えてみましょう。
キーは数値や文字列に変える事が出来ます。
最初の配列に => を使ってキーを指定していきます。
外部システムから投入されるSQSキューをLaravelで監視処理する
# はじめに
[Laravelのキュー](https://readouble.com/laravel/6.x/ja/queues.html)はLaravelから投入してLaravelで処理する前提になっているので、そのままだと外部の仕組みから投入したメッセージを処理することはできません。
https://laravel.io/forum/02-03-2014-help-with-setting-up-a-queue-listener
この投稿にあるように、`{“job”:”Acme\Jobs\PushFilesJob”,”data”:{“file_id”:”1″}}`のようなJSON形式で送信されていないとキューの中身とジョブの紐づけができないからです。
このフォーマットで送ってくれるならいいですが、外部の仕組みだとそうもいかないことがほとんどだと思います。
そこでなんか方法ないかと調べたところよさげなプラグインを発見。
https://github.com/dusterio/laravel-plain-sqs
ただ、README.mdがなかなか不親切だったため導入に難儀
PHPで配列を使ってみましょう!
#配列について
PHPの配列を操作していきます!以下の $scores に 1, 2, 3 の値を代入したいとします。
配列は[ ]で囲って、 , で区切ります。
“`php:index.php
以下をターミナルで実行します!
“`
~$ php index.php
“`$scores の [ 2 ] の要素が出力されました!
“`
~ $ php index.php
3
~ $
“`
インデックス番号は 0 から始まるので、0番目→1
1番目→2
2番目→3と表示されます!
なので $scores [ 2 ] は 3 が表示されました!配列を置き換える時にもインデックス番号を使います。
$scores[ 2 ] を8に置き換えてみます。
“`php:index.php
PHP関数の型の指定方法について…
#PHP型付けについて
引数や返り値に、文字列、整数値しか受け付けないように型を指定していきます!以下の関数があったとします。
“`php:index.php
$name と $score の引数の前に型を指定していきます!string は文字列で、
int は整数値を指定します!
“`php:index.php
ターミナルで以下を実行すると…
“`
~$ php index.php
“`show( ‘kana’, ‘kana’ ) ; の2
WordPressのメニューのli要素、a要素を現実的なHTMLに補正する
WordPressの「メニュー」はウィジェットやブロックエディタでも呼び出すことができて便利ですが、きっちりした案件に使用する際は以下の難点があります。
* li要素に無駄なクラスが付与される
* a要素にクラスが付与されていないCSSフレームワークを利用するなど、コーディングが完成してから着手する案件では困ります。
また、li要素に付与されるクラスは、びっくりするほど冗長です。
“`
menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-9999 current_page_item menu-item-has-children menu-item-8888
“`これだけ長いと、ページ全体のファイルサイズに少なからず影響があります。
最小限のコードで、現実的なHTMLに補正する方法を紹介します。li要素のみのTIPSはよく見るのですが、a要素が少なかったので書いておきます。## li要素の補正
li要素のクラス名を上書きするフッ