-1

如果您打开您的 zend 库,您可以看到名为 Acl 的文件夹以及 Acl.php 和 Zend 的其他库也是如此。我想知道为什么 Zend 这样做?这背后的逻辑是什么??

4

2 回答 2

4

这是因为:

  1. 类的命名约定
  2. 类 <-> 文件名(路径)关系的约定

如果您有一个与其他类相关的类,则相应地命名它们是合乎逻辑的,例如Zend_Form_Elementand Zend_Form

现在你来看看类名和文件名/路径之间的关系。由于规则很简单:用文件路径替换_类名/,你最终得到:

Zend_Form-> Zend/Form(.php)

Zend_Form_Element-> Zend/Form/Element(.php)

这就是您获得文件Form.php和目录的方式Form

于 2012-05-09T11:14:57.013 回答
3

这样你就不需要写代码了require_once'Zend/Acl.php'

Zend 在 spl 自动加载器堆栈上注册它的自动加载器。当你这样做

$acl = new Zend_Acl();

没有 require 或 include 。PHP 要求 Zend 自动加载器找到可以找到 Zend_Acl 类定义的文件。Zend 自动加载器的回应是将输入“Zend_Acl”替换'_'为目录分隔符并在末尾添加“.php”扩展名并include('Zend/Acl.php') ;自行执行。

由于库目录是 php include_path 的一部分,因此它可以工作。

于 2012-05-09T11:15:17.830 回答