2012-05-05 6 views
0

これは合理的に簡単な質問ですが、私はZendフレームワークでオートロードすることはできません。Zend_Loader_Autoloaderの使い方

基本的に、私はアプリケーション/モデル、アプリケーション/コントローラ、アプリケーション/ビューディレクトリを持つ標準のZendプロジェクトレイアウトを持っています。アプリケーション/フォームディレクトリも追加しました。クラス名はApplication_Form_ *

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

おかげで...

キム

答えて

1

。フォームを作成する場合には、このような次のようになります。 -

アプリケーション/フォーム/ Myform.phpが

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

あなたはその後、(例えばコントローラ内で)このように、フォームのインスタンスを作成することができます -

$myform = new Application_Form_Myform(); 

Zend Frameworkによって自動的にクラスが自動的に読み込まれます。

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

マニュアルのAutoloading in Zend Frameworkの説明があります。それから

エキス: - :ファイルシステムとの1の関係

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

基本的には、フォルダをオートローダーに登録する必要はありません。あなたが命名規則と適切なケーシングに従う限り、アプリケーションやライブラリ/ Zendフォルダの下にあるフォルダ内のファイルを見つけることができます。

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

+0

OK、application/formsはapplication/controllersと同じものに自動的に登録されます。他にどのようなディレクトリが自動的に登録されるのでしょうか? –

+1

@KimPrince:デフォルトのリソースオートローダーマッピングの完全なリストは、 'Zend_Application_Module_Bootstrap'クラスのソースコードを参照してください。 –

+0

@vascowhite:しかし、私のディレクトリはapplication/forms(複数形に注意してください)です。私のクラス名はApplication_Form_ *なので、1:1マッピングはありません。上記のDavid Weinraubのコメントを参照してください.... –

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