如果您打开zend库,您可以看到名为Acl的文件夹以及Acl.php& Zend的其他库也是如此。 我很奇怪为什么Zend这样做? 什么是这背后的逻辑?
答案 0 :(得分:4)
这是因为:
如果您有一个与其他类相关的类,则相应地命名它们是合乎逻辑的,例如Zend_Form_Element
和Zend_Form
。
现在你来看一下类名和文件名/路径之间的关系。由于规则很简单:在文件路径中使用_
替换类名中的/
,最终得到:
Zend_Form
- > Zend/Form
(PHP)
和
Zend_Form_Element
- > Zend/Form/Element
(PHP)
这是您获取文件Form.php
和目录Form
的方式。
答案 1 :(得分:3)
这样做不需要编写代码require_once'Zend/Acl.php'
Zend在spl自动加载器堆栈上注册其自动加载器。当你这样做
$acl = new Zend_Acl();
没有要求或包含。 Php要求Zend自动加载器找到可以找到类Zend_Acl定义的文件。 Zend自动加载器回复的做法是将输入'Zend_Acl'替换'_'
替换为目录分隔符,并在末尾添加'.php'扩展名并单独执行include('Zend/Acl.php') ;
。
因为库目录是php include_path的一部分所以它可以工作。