PHPの学習中にちょっとハマってしまったのでメモ。
環境
Laravel 5.7.28
PHP 7.1.3
背景
Laravelでscaffoldを使いたい場合、 Laralib/L5scaffold
を使うらしい。
そして、Laravel 5.5以降では以下のように修正しないとうまく動かないらしい。
LaravelのScaffoldのインストール問題
とここまではよくある記事ですが、私の環境では
php artisan
の実行結果はうまく表示されるものの、
php artisan make:scaffold ...(省略)
を実行するとエラーになってしまった。
解決法
vendor/laralib/l5scaffold/src/Makes/MakeController.php
// よく書いてある修正方法
use DetectsApplicationNamespace, MakerTrait;
// 名前空間を絶対指定にしたら動いた
use \Illuminate\Console\DetectsApplicationNamespace, MakerTrait;
エラー内容
Symfony\Component\Debug\Exception\FatalErrorException : Trait 'Laralib\L5scaffold\Makes\DetectsApplicationNamespace' not found
use
で指定している名前空間が相対指定になっているので、該当ファイルのnamespace
と連結されて意図しないパスになってました。
(よく読めばすぐわかる話でした...)
その他
でもそれ以前に、Laralib/L5scaffold
を追加した後のphp artisan
の実行結果が、
make:scaffold Create a scaffold with bootstrap 3
むむ、 bootstrap 3 なのね。古い。
GitHub見ても全然更新されてない...。
Railsみたいに標準でサポートされないのかな。
結論としては、もっと新しい教材で学習すべきでした。