質問

(特にPHP)の皆さんは、クラス名がプロジェクトディレクトリに関連するファイルへのパスを反映するクラスの命名規則についてどう思いますか?例:

# /project/Session/Abstract.php
# /project/Session/Database.php

class Session_Database extends Session_Abstract ...

あなたはそのアイデアを確信していると思います。また、プロの一部は明らかであると確信しています..しかし、あなたはどう思いますか-ナビゲートしやすい非常に素晴らしいディレクトリ構造を得るためにクラス名を長くすることは価値がありますか?

これにより、PHPでの1行の__autoload($ class)定義も可能になります。str_replace( '_'、 '/'、$ class);

このような慣習は愚かだと考える人もいるかもしれません。個人的には気に入っていますが、他の人が使用しているのを見たことがありません。実際にうまく機能するかどうかはわかりません。

include / require呼び出しを削除すると、すべてのクラスがautoload関数に依存する(接着される)場合がありますが、これは疎結合の理解に準拠していないと主張する人もいます>

このようなアプローチについてこれまでに私が知っている唯一の参照は、 http:// softwareengineering .vazexqi.com / files / pattern.html

それで、これについて意見がありますか?

役に立ちましたか?

解決

その後、あなたは見ていない。 PEAR はこのアプローチを使用しています。 Zend Framework も同様です。 PHPの世界ではかなり確立された標準です。初めて遭遇したのはいつかわかりませんが、私自身のフレームワークの一部として、またZFなどの公開されているフレームワークの一部として、個人的にそれを数年間使用し、気に入っています。

他のヒント

これについて気に入らない唯一の本当のことは、コードを移動する必要があるときに、多くの名前をやり直すことになります。しかし、エミルはすでにこれがコースにとってかなりパーだと指摘しましたが、 PHPユーザーランド命名規則

この規則も使用します。

きれいなファイル構造を持つのに役立つだけでなく、名前空間の問題にも役立ちます。この命名規則は、クラスの重複を避けるためにクラスにプレフィックスを付けるのに役立ちます。

PHP 5.3がリリースされ、最終的に名前空間が追加された場合でも、この規則を使用します。異なる方法で行う唯一のことは、クラス名を短縮し、プレフィックスを適切な名前空間に変換し、オートローダーで調整を行うことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top