这个目录结构组织像Zend Framework这样的类有一个名字吗?

时间:2011-03-05 11:01:06

标签: php class packages conventions autoload

在非常简单的小项目中,通常可以在相应命名的文件中定义类。例如,这种自动加载功能可以起作用:

function __autoload($class_name) {
    require_once $class_name . '.php';
}

但是当一个项目变得更大时,这可能是一个真正的混乱,名称可能会误导和混淆。为了解决这个问题,我看到了很多方法。

有些公司为他们的所有类添加前缀...比如“class.MyClass.php”来清理一个级别的混乱。

有些人在目录中组织它们。但是它们都必须添加到包含路径以减慢应用程序或必须在使用前更改为。代码变得复杂而奇怪。

PHP从版本5.3开始引入名称空间,尽管我还不确定它们的功能。

然而,由于zend框架,我越来越多地看到我认为受欢迎的标准如下:

function __autoload($className){
    require_once  str_replace('_','/',$className).'.php';
}

这个琐碎的自动加载器已经表达了这个概念。

类名前面带有下划线作为分隔符的路径。

例如,“服务”组件为各种服务提供商保留apis。

Zend/Service/Amazon.php持有班级Zend_Service_Amazon

可以在课程Zend/Service/Amazon/S3.php所在的Zend_Service_Amazon_S3找到更专业的Amaozn s3 API。

我认为这个概念非常容易维护,非常直观,现在非常普遍,可以适应大多数需求。

但它是怎么称呼的。它有名字吗?

2 个答案:

答案 0 :(得分:1)

建议。 它没有名称,但是因为Zend Framework首先使用它,其他的,它可能称为Zend样式结构,如Zend Coding Style

答案 1 :(得分:1)

终于找到了正确的答案。它被称为PSR-0,是自动加载的合规指南:

http://groups.google.com/group/php-standards/web/psr-0-final-proposal