1

zf2データベースとモデルのチュートリアルでは、このようなパスは私のモデルクラスを含むディレクトリにつながります。

module/Album/src/Album/Model

次の場所でさらに2つのクラスを作成しました。

module/Album/src/Album/Model/AlbumRelatedClass.php
module/Album/src/Album/Model/AlbumRelatedTable.php

これらのクラスを

module/Album/src/AlbumRelated/Model/

このテストの目的で、そこにモデルクラスの複製を作成しましたが、残念ながら、Albumのモジュール構成では、AlbumRelatedの場所にクラスが見つからないと表示されます。AlbumRelatedの場所の名前空間をAlbumRelated\Modelに変更し、クラスの場所(\ Album \ Model \ AlbumRelated())を直接参照しようとしましたが、成功しませんでした。

誰かが私がこれを行う方法を知っていますか?私がこれをするべきではない場合、誰かが理由を説明できますか?また、フォルダー構造がAlbum / Model / Albumである理由を知りたいと思います(冗長なようで、チュートリアルの説明が明確ではありませんでした)。

与えられたどんな助けも素晴らしいでしょう、ありがとう:)

4

1 に答える 1

0

短い答えは、おそらく新しい「AlbumRelated」名前空間を知るためにオートローダー構成を設定していないため、クラスが見つからないということです。で何が起こるかを見てください\Album\Module::getAutoloaderConfig()namespacesおそらく、キーと値のペアをlikeに追加したいと思うでしょう'AlbumRelated' => __DIR__ . '/src/AlbumRelated'。これにより、AlbumRelated 名前空間でクラスを検索する場所がオートローダーに通知されます。

そうは言っても、

私がこれをすべきではない場合、誰かが理由を説明できますか?

おそらく、そのようにするべきではありません。というトップレベルの名前空間があります\Album。次に、その\Album\Model下に名前空間があります。アルバムに関連するすべてのモデルは、そこに存在する必要があります。システムにレコード レーベルのエンティティがあり、アルバムをリリースしたレーベルに関連付けることができるとします。ZF2 の期待は、\Album\Model\RecordLabelに住んでいるという名前のクラスを作成することですmodule/Album/src/Album/Model/RecordLabel.php。RecordLabels が主にアルバムに関連していると仮定する限り、それは完全に理にかなっています。

もちろん、RecordLabel の管理に多くのワークフローがある場合は、RecordLabel を独自のモジュールに貼り付けることもできます。

また、フォルダ構造が Album/Model/Album である理由も知りたいです。

Album/src/Album のことだと思います。その冗長性は、きれいなPSR-0セットアップを維持することです。したがって、最初の Album はモジュールを識別し、2 番目は Album 名前空間のトップレベルです。これにより最大限の柔軟性が得られますが、厳密で迅速なルールではありません。調査のために、 zf2 の代替モジュール レイアウトに関する Rob Allen の最近のブログ投稿を参照してください。

于 2013-01-11T00:14:09.450 に答える