CakePHP独自プラグインの自動読み込みには composer dumpautoload が必要

スポンサーリンク

CakePHP3 で独自にプラグイン(plugins ディレクトリに置くライブラリ)を作成する機会があったのですけど、プラグインの autoload(自動読み込み)が効かなくて、しばらくの間はまってしまった。

— 環境 —
PHP 5.5.19
CakePHP 3.1.1

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

結論を先に書きますと… 自動読み込みを有効にするために、

を実行して、Composer の自動読み込みキャッシュをリフレッシュさせる必要がありました。

CakePHP3 でプラグイン作成と autoload 設定

プラグイン作成については、公式ドキュメントが詳しい。

プラグイン – CakePHP Cookbook 3.x ドキュメント

bin/cake bake コマンドでプラグインを生成します。

あとは、プラグインを好きなように作成する。

続いて、作成したプラグインを読み込むために、config/bootstrap.php に load の追記をする。

config/bootstrap.php

それから、自動読み込みを有効にするために、composer.json に autoload を追記します。

composer.json

以上で、ファイル側での autoload のための設定は終了です。

“composer dumpautoload” で Composer 自動読み込みキャッシュを初期化

しかしながら上記の設定だけですと、なぜか autoload が効かずエラーが発生し続けました。公式ドキュメントのプラグインのページを読み返したところ…

そして、 Composer の自動読み込みキャッシュを初期化する必要があります。

$ php composer.phar dumpautoload

と書いてあるのに気付き、以下を実行。自分の環境では composer コマンドでエイリアスを作っているので、やってることは公式ドキュメントに書いてあるのと同じことです。

これで、ようやく独自に作成したプラグインの自動読み込みが有効になりました。解決したらなんてことはない原因だったのですけど、ちょっと時間がかかってしまった…。CakePHP でプラグインを作る際のちょっとした落とし穴かもしれない。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!