你们(特别是PHP)你们想到类的命名约定,其中类名反映了与项目目录相关的文件路径? e.g:
# /project/Session/Abstract.php
# /project/Session/Database.php
class Session_Database extends Session_Abstract ...
我相信你明白了。我也确定一些优点是显而易见的..但你怎么看?为了获得非常好的目录结构很容易导航,是否值得延长类名?
这也允许PHP中的单行__autoload($ class)定义:str_replace('_','/',$ class);
我想有些人会认为这种惯例是愚蠢的。我个人喜欢它,但我没有看到其他人使用它,我不太确定它在实践中是否会如此有效。
其中一个缺点可能是删除了include / require调用,所有类都依赖于(粘合在一起)自动加载函数,有些人可能认为,这不符合他们对松散耦合的理解。
到目前为止,我所知道的关于这种方法的唯一参考是http://softwareengineering.vazexqi.com/files/pattern.html
那么,你对这个有意见吗?
答案 0 :(得分:5)
然后你一直在寻找。 PEAR使用此方法。 Zend Framework也是如此。它是PHP世界中一个相当成熟的标准。我不知道我什么时候第一次遇到它,但我个人使用它并喜欢它好几年了,既作为我自己的框架的一部分,也作为ZF等公共框架的一部分。
答案 1 :(得分:1)
我不喜欢的唯一真实的事情是,当我需要移动代码时,我最终会重新编写许多名称。但是,Emil已经指出,这几乎与课程相同,但我想添加PHP Userland Naming Rules。
答案 2 :(得分:1)
我也使用那种惯例。
它不仅有助于拥有漂亮的文件结构,还有助于命名空间问题。该命名约定有助于为类添加前缀以避免重复的类名。
当PHP 5.3出现并最终拥有名称空间时,我仍将使用此约定。我唯一不同的做法是缩短我的类名,将我的前缀转换为正确的名称空间并在我的自动加载器中进行调整。