2009-05-01 66 views
2

你是什么(特别是PHP)人们想到一个类名的命名约定,其中类名反映了与项目目录相关的文件路径?例如:什么是文件路径类名称约定?

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

class Session_Database extends Session_Abstract ... 

我相信你明白了。我也相信一些专业人士是显而易见的..但是你认为 - 为了获得很好的目录结构以便导航,延长班级名称是否值得?这也允许在PHP中使用一行__autoload($ class)定义:str_replace('_','/',$ class);

我想有人会认为这样的约定是愚蠢的。我个人喜欢它,但是我没有看到它被其他人使用,我不确定它在实践中是否能够很好地工作。

其中一个缺点可能是在删除包含/要求调用时,所有类都依赖于(粘在一起)自动加载函数,有些人可能会争辩说,它不符合他们对松散耦合的理解。

已知可我至今对这种方法唯一的参考是http://softwareengineering.vazexqi.com/files/pattern.html

那么,你对这个评论?

+0

我在这里问了一个类似的问题:http://stackoverflow.com/questions/791899/efficient-php-auto-loading-and-naming-strategies,所以我期待着看到你的一些答案,他们应该很好地补充。 – zombat 2009-05-01 21:54:46

回答

5

然后你一直没有看。 PEAR使用这种方法。那么Zend Framework。这是PHP世界中相当成熟的标准。我不知道我什么时候第一次遇到它,但我已经亲自使用过它并且喜欢它好几年了,既是我自己的框架的一部分,也是ZF等公共可用框架的一部分。

+0

事实上,我一直没有看 - 我倾向于避免PEAR,最近我没有打扰Zend框架。 尽管如此,我还没有遇到其他开发人员在我周围的使用它的问题,并且问题在困扰着我。谢谢你指出我明显的。 – Petrunov 2009-05-01 22:13:12

1

我不喜欢这件事的唯一真实情况是,当我需要移动代码时,我最终重新处理了大量名称。然而,埃米尔已经指出,这是非常相似的课程,但我想添加。

1

我也使用该惯例。

它不仅帮助有一个漂亮的文件结构,它也有助于命名空间问题。该命名约定有助于为类加上前缀以避免重复的类名称。

当PHP 5.3发布并最终有名称空间时,我仍然会使用这个约定。我唯一不同的做法是缩短我的类名称,将我的前缀转换为适当的名称空间,然后在自动加载器中进行调整。