1

私はいくつかのパッケージを開発していますが、その多くはメインアプリにあったコードに基づいているか、パッケージではなくアプリにコードを記述した例に基づいています。Use View;さまざまなファイルにまたはを追加するのを忘れ続けてUse Controller;おり、これらを手動でチェックして、パッケージ内のすべてのPHPスクリプト(それらを必要とする)に追加する必要があります。

これを自動化して、パッケージ内で1回だけ宣言する必要があるようにする方法はありますか、それともメインアプリのファサードにパススルーさせる方法はありますか?

4

1 に答える 1

1

ないのではないかと思います。

これは、パッケージコードに独自の名前空間があり、Illuminateコアにも独自の名前空間があるためです。PHPの使用ステートメントは、ファイルごとにのみ使用されます。スクリプトが別の名前空間のクラスを使用する場合、2つのオプションがあります。

  • クラスを現在の名前空間にエイリアスするために(ファサードに)use-statementsを追加する
  • ファサードの完全な名前空間(グローバル名前空間から開始)、Laravelが自動的に作成するグローバル名前空間のエイリアス(\ View)、またはファサードの元の完全な名前空間(\ Illuminate \ Support \ Facades \ View)を参照する

完全な名前空間を参照する例:

<?php

namespace My\Package;

class SomeClass
{
    public function doSomething()
    {
        // reference full namespace
        $view = \Illuminate\Support\Facades\View::make('someview');
        // or
        $view = \View::make
    }
}

?>

これは、使用ステートメントを使用する必要がない方法のように見えるかもしれませんが、私の意見ではもっと悪いです。したがって、これらの使用ステートメントを追加することに慣れることをお勧めします。

これをベストプラクティスと見なす必要があります。これらのuseステートメントは、クラス(またはファイル)の依存関係を明確に示しています。これらの量を減らしてみることを常にお勧めします。

于 2013-03-02T14:06:45.400 に答える