nam*_*orm 10 zend-framework namespaces
命名空间非常有用,直到最近的几个版本AFAIK,PHP才支持它们.
当我使用Zend Framework,我要记住很长的名字用下划线 -样Zend_Form_Element_Button
或Zend_Form_Decorator_HtmlTag
等等.
如果我使用命名空间,这可能是可能的,而且更容易:
namespace Zend { class something { // ... } } namespace Zend\Form { class something { // ... } } namespace Zend\Form\Element { class Button { // ... } }
要使用它,我这样做:
use Zend\Form\Element\Button; $btn1 = new Button();
所以我的问题是,考虑到自动加载器系统和许多存在于Zend Framework中的元级"黑魔法",使用命名空间重写代码结构,然后拥有更合理的类名,这是否是微不足道的?
问题不在于类名的长度 - Eclipse/Netbeans/Aptana处理得非常好,这是长名称的刺激性.如果您使用的某些类在名称中具有类似的部分,则在一段时间后
会变得混乱.
由于ZF是开源许可的,我不认为Zend会介意代码的命名空间版本,如果仅仅重命名和一些代码的重组可以实现这一点.
Bil*_*win 16
不是小事,不是.
Matthew Weier O'Phinney撰写了一篇博客,介绍了ZF在重构代码以支持PHP 5.3命名空间时必须面对的一些问题:
http://weierophinney.net/matthew/archives/181-Migrating-OOP-Libraries-and-Frameworks-to-PHP-5.3.html
Abstract
是PHP中的保留字.接口也是如此.考虑这个特别重要的例子:Run Code Online (Sandbox Code Playgroud)namespace Zend::View abstract class Abstract implements Interface { // ... }
我们在那里有两个保留词:
Abstract
和Interface
.
Zend框架中充满了名为Abstract
和的类Interface
.他们将不得不进行大量向后不兼容的重构更改,以使ZF代码支持名称空间.
此外,由于反斜杠是字符串中的元字符,因此任何基于类名动态加载类的代码(例如Zend_Db::factory()
或者Zend_Filter_Input
)都不必要地实现,因为PHP核心团队使用反斜杠作为命名空间分隔符做出了决定性的决定.