これからWeb開発のバックエンドを学ぶ in 2018(PHP7編 - 0.723日目)|Scaffoldは動かない

これからWeb開発のバックエンドを学ぶ in 2018(PHP7編 - 0.72日目)の続きです。

Udemyのオンライン教材【2日でできる】はじめての PHP 7 x Laravel 5.5 入門
レクチャー70:Scaffoldのライブラリを追加しよう、まで来ました。

Scaffoldと言えば、この間、Rails5はじめました。で使ってみて
感動体験をした機能ですが、同じものがPHPにもあったんですね!

だが、しかし!
結局、この機能はLaravel5.6で動きませんでした・・・。

教材の開発環境とLaradockで作成したローカル開発環境の相違点を発見

また前回同様、ここでも私がLaradockを使って構築したPHP7/Laravel開発環境と、教材の環境で相違がありました。
これもLaravelのマイナーバージョン違いによるものです。バージョンの差って怖いですね。

教材の開発環境

PHP: v7.0.2
Laravel: 5.5

Laradockで作った開発環境

#workspaceコンテナにアクセス
docker-compose exec  workspace bash

#PHPのバージョン
php -v

PHP 7.2.0-2+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Dec  7 2017 20:14:31) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.2.0-2+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2017, by Zend Technologies

#Laravelのバージョン
composer show laravel/framework | grep versions

versions : * v5.6.12

Scaffoldに必要なライブラリをインストールしてみる

#Scaffoldのパッケージを追加
composer require 'laralib/l5scaffold' --dev

Using version ^1.0 for laralib/l5scaffold
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing laralib/l5scaffold (1.0.10): Downloading (100%)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nunomaduro/collision
Package manifest generated successfully.


#フレームワークのコードを結合して一つのファイルに纏めるように最適化もしておく
php artisan optimize

  Command "optimize" is not defined.

あれ? 「php artisan optimize」コマンドが未定義エラー。。。
調べたらなんと、Laravel5.6では消えてました。。。
PHPのキャッシング機構が改良されたので、この最適化コマンドは不要となり消されたとの事でした。

Laravel5.6で消えたartisan optimizeコマンド

Laravel 5.6 Will Remove the Artisan Optimize Command

Bootstrap4未対応なlaralib/l5scaffold

インストールしたlaralib/l5scaffoldっていうパッケージが、どうやらBootstrap3のソース生成らしい。
自分のLaradock環境だとBootstrap4になってるので、もうちょい新し目のパッケージ無いかなぁ。。。

そして結局使えなかったScaffold

laralib/l5scaffoldは、どうやらLaravel5.6では動かなさそうな気配。
2つのエラーに出くわしたが、2つ目が解決できず動かなかった。

エラー1
#artisanコマンド実行時にエラー
php artisan

 Whoops\Exception\ErrorException  : Trait 'Laralib\L5scaffold\Commands\AppNamespaceDetectorTrait' not found
  at /Users/uwettie/works/phpstudy/todo/vendor/laralib/l5scaffold/src/Commands/ScaffoldMakeCommand.php: 21

→対処:該当ソースでAppNamespaceDetectorTraitを利用していた箇所をDetectsApplicationNamespaceに置き換え
参考)Laravel artisanコマンドでエラーが出る時の対処法

エラー2
#artisan make:scaffoldコマンド実行時にエラー
php artisan make:scaffold Task --schema="title:string,body:text"

   ReflectionMethod::__construct(Object(Laralib\L5scaffold\Commands\ScaffoldMakeCommand), "handle")
      /Users/uwettie/works/phpstudy/todo/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php : 135

→対処:誰か何やらIssueに挙げてるけど放置してクローズしてた・・・。解決できず。
参考?) cannot install laralib/l5scaffold in Laravel 5.5

勉強で作ってるプロジェクトのソース

https://github.com/masaaki-uegaki/bookapp

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.