1

私は何年もの間探して学ぼうとしてきましたが、それは固執しません。Zend 2のチュートリアルは1つしかないようですが、それほど賢くはありません。ここにサンプル構造があります(そしてチュートリアルはこのアプリケーションで進行します)http://framework.zend.com/manual/2.0/en/user-guide/modules.html

zf2-tutorial/
    /module
        /Album
            /config
            /src
                /Album
                    /Controller
                    /Form
                    /Model
            /view
                /album
                    /album

それはクールではありません-どのアルバムがどれであるかをどうやって知ることができますか?Zend 1では、それは非常に理にかなっています。モジュールがあり、次にコントローラーがあり、それらのコントローラーにはアクションがあります。

これで、Albumというモジュールができました。src/Album/...「シングルコントローラー」ですか?だろう:

zend1application/modules/album/albumcontroller.phpにマップしzend2application/modules/album/src/album/controller/albumcontroller.phpますか?その場合、なぜ今3枚のアルバムがあるのですか?albumcontroller.phpをindexcontroller.phpに変更するとどうなりますか?(私はテストしてきましたが、それが固執することのない非常に多くの変更があります-私は最終的に誰かに尋ねるべきだと思いました、そして私がなぜ覚えているのか知っているなら。

別の見方をすると、アルバムのように見え、同じmodule/Albummodule/Album/src/Albumある必要があります。それでは、なぜ2回持っているのでしょうか。それはエラーの余地を作るだけではありませんか?なぜsrc/albumフォルダがあるのですか?コントローラー、フォーム、モデルを下に置いてみませんmodule/Albumか?

Controllerというフォルダがあるのはなぜですか?以前は、モジュール内にコントローラー(複数形、なぜ今は単数形なのか)というフォルダーがありました。これは理にかなっています。しかし、なぜコントローラーがsrc/Albumフォルダー内にあるのでしょうか。

お時間をいただきありがとうございます。私は調査を試みましたが、(私の意見では)それがあまりにもまばらに文書化されているように見えるとき、それはあまりにも大きな吸収だと思います。または、誰かが私にhttp://survivethedeepend.com/のような本を教えてもらえたとしても、ZF2の場合は、非常に高く評価されます。

4

1 に答える 1

4

Zend Framework 2は、PHPfigsPSR-0標準に準拠しています。これは、ディレクトリ構造がクラス名に直接関連していることを意味します。しかし、それに近づく前に、基本的なアーキテクチャについて説明しましょう。

まず、がありModuleNAMEます。モジュール名は一意である必要があるため、モジュール名をモデルのにマップすることだけが意味がNamespaceあります。

modulesフォルダー内には、3つのサブフォルダーがあります。。という名前の構成アイテム用の1つのフォルダーconfig。名前付きのソースコードファイルsrc用の1つのフォルダーと、ビューファイル用の1つの追加フォルダーview

この分離は、単に概要を示すためのものです。構成、ビュー、ソースコードを別のものから分離します。それらを一緒に束ねることは意味がありません、そして私はあなたが同意するだろうと思います。これはZF1でもほとんど同じです。

興味深い部分は、ソースフォルダsrcです。先ほど、PSR-0スタンダードについてお話しました。そして、これが発効する場所です。デフォルトでは、各モジュールのソースファイルはソースフォルダから検索されますsrc。したがって、クラスがある場合は常に、ソースフォルダに基づくPSR-0標準を使用します。Mewning:My\Funky\Class内にありますsrc\My\Funky\Class.php

基本的にはこれですべてです。コントローラーには通常、のようなFQCNがあるMymodule\Controller\SomeControllerため、このクラスは内部にあります。src\Mymodule\Controller\SomeController.php

発生する主な質問は次のとおりです。フォルダがすべてlowercaseである場合とある場合があるのはなぜですかucfirst。答えは、もう一度ですPSR-Standards。クラス名や名前空間はupperchar文字で始まることになっています。また、パス名はcase-sensitiveであるため、フォルダはクラス名と完全に一致する必要があります。

編集私が偶然見つけたもう1つの素晴らしい読み物は、Rob Allensの最新のブログ投稿:モジュールディレクトリ構造についての考えです。彼は、デフォルトの設定を好みに合わせて簡単に変更する方法を説明しています。

于 2013-01-04T03:12:53.153 に答える