6

ZF 1.10 アプリケーションにカスタム クラスを含むフォルダがあります。フォルダーは /library にあります。それらがどこにあるかを ZF に伝えるにはどうすればよいですか? application.ini と index.php の両方がライブラリへのパスを設定しますが、ZF はファイルを見つけることができません。

ありがとうございました

4

4 に答える 4

24

独自のカスタム関数またはクラスを作成し、それらをどこに配置するかという問題に遭遇することがよくあります。

したがって、カスタム クラス (またはカスタム ライブラリ) を追加するには、zend フレームワークのオートローダー名前空間を使用できます。

以下の行を application.ini ファイルに追加します

autoloaderNamespaces.custom = "Custom_"

また

autoloaderNamespaces[] = "Custom_"

すべてのカスタム クラスは、ライブラリ ディレクトリの下に保持されます。ライブラリ ディレクトリにフォルダ名「Custom」(application.ini で定義) を作成します。

クラスには、ファイル内の宣言で「Custom_」というプレフィックスが付けられます (例: Custom_Test)

$test = new Custom_Test()これで、アプリケーションでこのクラスを として使用できます。

于 2011-01-03T10:11:49.243 に答える
8

多くの可能な解決策があります。最も一般的な方法は、Zend アプリケーションを使用する場合、application.ini以下を追加して名前空間を登録することです。

autoloaderNamespaces[] = "Example_"

その他の解決策:

  • include_path使用するディレクトリを追加しますset_include_path()(アドホックソリューション)
  • PEAR の命名規則に従います (パスの解決が可能でした)

でオートローダをセットアップしBootstrap.phpます。

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace("Example"); // or Example_
}

最終的に、モジュールまたはリソースの autoloaderをセットアップします。

$resourceLoader->addResourceTypes(array(
     'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'example' => array(
        'path'      => 'examples/',
        'namespace' => 'Example',
    ),        
));
于 2010-03-22T22:15:22.527 に答える
1

Rob Allen によるこの古い Zend Framework チュートリアルを参照してください。具体的には、ブートストラップについて語っている 4 ページを参照してください。彼の新しいチュートリアルは、優れたものと同様に、Zend Tool に依存してアプリケーションの作成を行っているように見えますが、これについては詳しく説明していません。

しかし、私が驚いたことの 1 つは、含めようとしているフォルダーがpublic /libraryであるとあなたが言及したことです。意図的にコードを世界と共有したい場合を除き、別の場所に配置することを強くお勧めします...パブリックと共有されていない別の「パブリック」フォルダーを持っている場合を除きます(その場合、名前を変更することを検討することをお勧めします)。将来の混乱を避けるため)。

于 2010-03-22T20:55:55.647 に答える
0

カスタム ライブラリを composer.json に追加します。

"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},

composer update を実行します

于 2014-05-06T13:02:11.933 に答える