はじめに
VSCode などのエディタで PHP の LSP を提供してくれる Intelephense は、PHPで開発する人にとってなくてはならないツールです。
しかし、FuelPHP フレームワークを使って開発していると、FuelPHP の Core Library を利用している場所で参照エラーが発生し、とても不便な状態になります。
そこで、今回はこの状態を解決する方法をお伝えします!
問題の背景
FuelPHP で Core Library を利用する場合にエラーが発生する原因は Fuel\Core\ClassName
を ClassName
で参照しているためです。
FuelPHP ではデフォルトで Fuel\Core\ClassName
を ClassName
として参照できるようにエイリアスが設定されていますが、このエイリアスが貼られているかどうかは動的に解析しない限りわかりません。
そのため、Intelephense はそのようなクラスが存在しないとして参照エラーを発生させます。
解決策
この問題を解決するためには fuel/app/config/development/alias.php
などのどこからも参照されないファイルを作成します。
例えば Config
クラスが参照エラーになっている場合、class Config extends Fuel\Core\Config {}
という一行を追記することで解決します。
このファイルは Autoloader
で読み込まれる場所にある必要はなく、作業ディレクトリ以下のどこかに存在していれば問題ありません。
今回は fuel/app/config/development
に置きましたが、直接作業ディレクトリに alias.php
を配置しても解決します!
もちろん alias.php
という名前である必要もないです。
コード例
例えば Config
、Cookie
、Session
がエラーとなっている場合、以下のように記述することで参照エラーが解決します。
<?php
class Config extends Fuel\Core\Config {}
class Cookie extends Fuel\Core\Cookie {}
class Session extends Fuel\Core\Session {}
独自クラスを fuel/app/bootstrap.php
などで \Autoloader::add_classes()
を利用して追加している場合は、独自クラスを継承することで解決します。
<?php
class Hoge extends My\ClassName\Hoge {}
まとめ
これで Intelephense を使って快適な PHP 開発ができるようになります!是非試してみてくださいね!
Happy coding!
余談
自分は VSCode を利用したことがなく、常に vim で開発を行っております。
vim での開発時に Intelephense の参照エラーを解決した方法社内で共有したところ、VSCode で同じ問題に悩まされていた人たちも解決したようでした。
思った以上に社内で反響があったので記事に残しました!