6

Laravel の Sentinel バンドルを使用するプロジェクトがあります。

少し前に、バンドルで提供されているモデルの拡張について質問しました。私が受け入れた答えは機能しましたが、ベンダー フォルダー内のバンドルのコードを編集する必要がありました。

それ以来、composer updateコマンドを実行したところ、適用した変更が上書きされました (驚くことではありません)。

laravel がどのように機能するかについてもう少し知ったので、アプリがバンドルのサービスを参照するエンドポイントをさかのぼることができました。私のconfig/app.phpファイルには、サービスプロバイダーの参照があります。

'Sentinel\SentinelServiceProvider',

SentinelServiceProviderサービスには、オーバーライドする必要があるクラスを登録するメソッドがありますregisterRepoServiceProvider

私の計画は、2 つの新しいファイルを作成することです:ExtendedSentinelServiceProvider.phpExtendedRepoServiceProvider.php.

このExtendedRepoServiceProvider.phpファイルでは、ユーザー リポジトリ バインディングに使用されているクラスをカスタム ユーザー クラスに置き換えることができます。

    // Bind the User Repository
    $app->bind('Sentinel\Repo\User\UserInterface', function($app)
    {
        return new ExtendedSentryUser( // This is my custom model that I want the ExtendedRepoServiceProvider to use
            $app['sentry']
        );
    });

ファイルで、既存のクラス参照を新しく変更したクラスExtendedSentinelServiceProvider.phpに置き換えます。RepoServiceProviderExtendedRepoServiceProvider

public function register()
{
    $loader = \Illuminate\Foundation\AliasLoader::getInstance();
    $loader->alias('Sentry', 'Cartalyst\Sentry\Facades\Laravel\Sentry');

    $repoProvider = new ExtendedRepoServiceProvider($this->app); // This would be my new ExtendedRepoServiceProvider class
    $repoProvider->register();

    $formServiceProvider = new FormServiceProvider($this->app);
    $formServiceProvider->register();
}

config/app.php次に、ファイル内のサービス プロバイダー参照を新しいExtendedSentinelServiceProviderクラスに置き換えます。

'providers' => array(
    ...
    'Sentinel\ExtendedSentinelServiceProvider',
    ...
),

私の質問は、ベンダー コードを変更するのではなく、私の変更をアプリ ディレクトリに保存できる方法として、これは理にかなっていますか? 名前の間隔に関しては、これは問題になるでしょうか? これを行うより良い方法はありますか??

どんな助けでも歓迎です。

4

1 に答える 1

0

名前の間隔の問題に遭遇するべきではありません。ただし、別のオプション (特に、他のユーザーにとって一般的に役立つ機能を追加する場合) は、github でプロジェクトをフォークし、composer.json の "repositories" 属性に git プロジェクトへの参照を含めることです。たとえば、次のように追加できます。

"repositories": [
    {
        "type": "git",
        "url": "git@github.com:{your-user}/Sentinel.git"
    }
],

そして、作曲家は、インストール/更新を行うたびに、フォークを調べます。

于 2014-07-25T03:26:24.263 に答える