0

実存的な質問がありますが、誰かが答えてくれることを願っています。
Cakephp コントローラーに「コントローラー」という単語を付ける必要があるのはなぜですか?

命名規則が何であるかは知っていますが、なぜそうなのかはどこにも書かれていません(まあ、どこかに書かれているかもしれませんが、見つかりませんでした)。

コントローラーのクラス名は複数形、キャメルケース、およびコントローラーで終わる

PostModel.phpWhateverModel.phpまたはviewView.ctp、はありませんaddView.ctp。モデルでは、それは単にPost.phpまたはItem.phpです。ビューを使用すると... まあ何でもありますが、アクションの最後に「ビュー」を追加する必要はありません。コントローラとの違いはなぜですか?

エラーItemModel.phpItemsController.php.

Fish.phpモデルのようにFish.php、コントローラー部分を追加しなければ、コントローラーもそうなるでしょう。しかし、フォルダの分離は非常に明確であり、

/Controller
   Fish.php
/Model
   Fish.php

それは本当に問題ではありません...それともそうですか?

私の質問は、コントローラーの命名規則がそのようなものではない理由と、「理由」以外に論理的な理由があるかどうかです「バージョン 0.0.1 でそのように始めて、それを変更するのが遅かった」でも十分です。

4

1 に答える 1

6

モデルは、型が追加されていない唯一のクラスです。

Something <- model class
SomethingBehavior <- behavior class
SomethingHelper <- helper class
SomethingController <- controller class
SomethingComponent <- Component class
SomethingView <- View class

次のことはできません。

/Controller
   Fish.php
/Model
   Fish.php

同じクラス名で 2 つのクラスを PHP にインポートしようとしたことがありますか? (CakePHP は 2.x 以降、クラス名がファイル名と一致することを期待しています)

Fatal error: class `Whatever` already exists (or something similar)

PHP 5.3 と名前空間の前では、これらの致命的なエラーを回避するためにこれを行う必要がありました。CakePHP 2.x 以下は 5.3 以下のバージョンの PHP と名前空間を対象としていたため、これが行われました。

また、クラスのインポートを容易にするために、ファイル名をクラス名にマップします。これが、クラス FishController で Fish.php を使用できない理由です。これで致命的なエラーは確実に回避できますが、Cake はそのようなクラスをロードしません。

CakePHP 3.x は PHP 5.4 を対象としますが、コントローラー/コンポーネント/動作などは下位互換性のために引き続き存在します (おそらく、最新の3.x ブランチにはまだ存在します) 。

于 2013-05-27T16:59:02.843 に答える