0

これはかなり簡単な質問だと思いますが、Zendフレームワークで自動読み込みができません。

基本的に、私はアプリケーション/モデル、アプリケーション/コントローラー、アプリケーション/ビューディレクトリを備えた標準のZendプロジェクトレイアウトを持っています。また、application / formsディレクトリを追加しました。このディレクトリに含まれるクラスには、Application_Form_*という名前が付けられます。

新しいディレクトリをオートローダーに登録するにはどうすればよいですか?

ありがとう...

キム

4

2 に答える 2

1

新しいディレクトリをオートローダーに登録する必要はありません。フォームを作成すると、次のようになります。-

application / forms / Myform.php

class Application_Form_Myform extends Zend_Form
{
    public function init()
    {
        //Put your code here
    }
}

次に、次のようにフォームをインスタンス化できます(たとえば、コントローラーで):-

$myform = new Application_Form_Myform();

その後、ZendFrameworkがクラスを自動ロードします。

http://framework.zend.com/manual/en/learning.quickstart.create-form.html

マニュアルには、 ZendFrameworkでの自動読み込みの説明があります。

それからの抜粋:-

Zend Frameworkは、»PEARからアイデアを借りました。これにより、クラス名はファイルシステムと1:1の関係になります。簡単に言うと、ファイルへのパスを解決するために、アンダースコア文字( "_")がディレクトリ区切り文字に置き換えられ、その後に接尾辞".php"が追加されます。たとえば、クラス「Foo_Bar_Baz」はファイルシステムの「Foo / Bar/Baz.php」に対応します。また、クラスはPHPのinclude_path設定を介して解決される可能性があることも前提としています。これにより、include()とrequire()の両方がinclude_pathの相対パスルックアップを介してファイル名を見つけることができます。

これは基本的に、フォルダがすべてオートローダーに登録されている必要がないことを意味します。命名規則と適切な大文字小文字の区別に従えば、アプリケーションまたはライブラリ/Zendフォルダーの下の任意の場所にあるフォルダー内のファイルを非常にうまく見つけることができます。

's'で終わるapplication/の下のデフォルトのフォルダは、で特別に扱われる特殊なケースでZend_Application_Module_Autoloader::initDefaultResourceTypes()あり、メインの自動ロードメカニズムと混同しないでください。

于 2012-05-05T10:59:06.853 に答える
0

使用$resourceLoader

$resourceLoader->addResourceTypes(array(
    'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'form' => array(
        'path'      => 'forms/',
        'namespace' => 'Form',
    ),
    'model' => array(
        'path'      => 'models/',
        'namespace' => 'Model',
    ),
));

参照: http: //framework.zend.com/manual/en/zend.loader.autoloader-resource.html

于 2012-05-05T10:53:41.090 に答える