October CMS プラグイン実装テク:プラグインから自動的にファサードやサービスプロバイダを登録する


OctoberCMSプロジェクトの config/app.php を変更しなくても、プラグインから自動的にファサードやサービスプロバイダを登録できる。プラグインで追加したパッケージのファサードなどを利用可能にしたい場合などに便利。

Plugin.php の boot() メソッドで App::register() でサービスプロバイダを、AliasLoader::alias() でファサードを登録する。

下記はpikanji/agent-pluginでの実装例。

Plugin.php
class Plugin extends PluginBase
{
    public function boot()
    {
        // Enable jessengers/agent package and register Agent facade.
        App::register('Jenssegers\Agent\AgentServiceProvider');
        AliasLoader::getInstance()->alias('Agent', 'Jenssegers\Agent\Facades\Agent');
    }

ちなみに "Call to undefined method" とエラーになる場合は↓これで解決するかも。
Laravelトラブルシューティング:facadeのメソッドが undefined エラーになる