PHP(Laravel)メモ
docker-compose.ymlがすでにcomposer実施後の想定だったので、インストールする
docker run --rm -it -v $PWD:/app composer bash
composer.jsonの内容をインストールする。
composer-lock.jsonと整合性取れてないって言われたのでいったん削除して再度実施する
composer install
このエラーが出ているので、.envのファイルに値を追加して再度やってみているがうまくいかない。
起動した。ここを見ながらやっていく
何もわからないので、とりあえず、dockerコンテナに入ってみて、URIのリストを見てみる
docker exec -it コンテナ名 bash
php artisan route:list
なんかエラーがでるので、1個ずつ調べて解消する。
どうやらControllerが不足していたらしいのでコメントアウトする
laravel.logのパーミッションエラーが。。なぜだ。とりあえずファイルを許可する
chmod 777 laravel.log
No application encryption key has been specified.
って画面に出たので、Web画面上で提案された通りになんか入れる。
php artisan key:generate
migrationとseedの実行をする
php artisan migrate
php artisan db:seed --class=xxxSeeder
言語仕様をよみたい
Laravelのmodel
うーん、、やっぱりこういうやり方しかないのか
modelのcreateについて
まずは__callStaticが呼ばれるらしい
これは__callをよびだす
forwardCallToは以下の部分になる
ここで、objectのmethodを実行している。
objectは $this->newQuery()
なので、ここを呼び出している。
この関数はbuilderを返すので、builderのcreateが呼ばる
まとまっていた
マジックメソッドは、 ある動作がオブジェクトに対して行われた場合に、 PHP のデフォルトの動作を上書きする特別なメソッドです。
__call() は、 アクセス不能メソッドをオブジェクトのコンテキストで実行したときに起動します。
__callStatic() は、 アクセス不能メソッドをstatic メソッドとして呼び出した場合に起動します。
らしい。
laravel-mix
最新ではここがviteになっているらしい。やっとつながってきた
tsを利用する
PDFにするメモ
配列の挙動
これも配列の挙動なのか
LaravelのDIについて
コントローラーのコンストラクタにタイプヒントされた引数を指定するだけでいいらしい。
公式の該当部分
サービスプロバイダーについて
認可まわり
phpは関数を引数として渡せるのか
Autoloadの仕組み。動的じゃないんだね。
へー。composerの仕様でファイルとクラスは同じである必要があるらしい
遅い話
file_put_contents(/var/www/html/storage/framework/sessions/xxxx): Failed to open stream: Permission denied
なんかエラーがでたので、権限変更する
雑にPHPの動作確認をしたいときに便利だったコマンド。Laravelとかのフレームワークだと多分うまく起動しない
docker run --rm -it -p 8000:8000 -v $PWD:/var/www/html php php -S 0.0.0.0:8000 /var/www/html/xxx.php
rails console 的なコマンド
php artisan tinker
ログを確認する
DB::enableQueryLog()
dump(DB::getQueryLog()) && DB::flushQueryLog();