多くのフレームワークは URL 規則を使用し/controller/action/{id}
ていますが、それ以上の構成が必要な場合は、独自のルートを作成する必要があります。
/users/{id}/friends
バックエンドのような URL をどのように処理しますか? (ユーザーのすべての友達を一覧表示するため)
コントローラーでは、次のようなものが適切だと考えています。
class User {
function index() {
echo 'user index';
}
}
class Friend extends User {
function index($user_id) {
echo 'friend index';
}
}
次に、次のマップが表示されます。
/users -> User::index()
/users/{id} -> User::view($id)
/users/{id}/friends -> Friend::index($user_id)
Friend クラスを User クラス内に配置したかったのですが、明らかに PHP ではそれができないため、これが最善の方法です。考え?
友達のリストを編集するには、どの URL を使用しますか? /users/{id}/friends/edit
動作する可能性はありますが、他の人の友達リストを編集するべきではないため、適切ではないようです。/account/friends/edit
より良い選択でしょうか?それに対応するコードをどこに配置しますか? フレンド コントローラー、ユーザー コントローラー、または特殊なアカウント コントローラーでしょうか?
おまけの質問: どちらが好きですか? /photos/delete/{id}
また/photos/{id}/delete
回答:
だから、私が答えから集めたのは、「もの」が複雑(「友達」のように)であるが、独自のコントローラーを持っていない場合は、モデルなしでコントローラーを与えることができるか、そうでない場合は、それが最も密接に関連しているものは何でも詰め込んでください。URL は、コードを配置する場所に影響を与えるべきではありません。ほとんどの人は/controller/action/{id}
、人々が慣れ親しんでいるものなので、可能な限りそれに固執するべきだと考えているようです.
「ぎこちない」と言う以外に、拡張クラスについて実際にコメントした人は誰もいませんでした。その場合、本当に分離したいのであれば、おそらく FriendList がより適切なクラスだったでしょう。
すべての答えをありがとう:)