PHP命名空间:如果I';I’我不需要重新声明已经获取的函数,我需要它们吗


PHP Namespaces: If I'm not going to need to redeclare already taken functions do I need them?

我想知道,如果我的函数没有类似的名称,我需要使用名称空间吗?

此外,我无法从特定文件夹导入所有命名空间

我想知道,如果我的函数没有类似的名称,我需要使用名称空间吗?

没有。

然而,名称空间比避免名称空间冲突提供了更多的好处,它还迫使您维护良好的目录和文件结构,这使得您的文件很容易找到,并且是确定父/子关系的直观方法。

例如:

// Zend/Translate/Adapter.php
class Zend_Translate/Adapter {}
// Zend/Translate/Adapter/Csv.php
class Zend_Translate_Adapter_Csv extends Zend_Translate_Adapter {}

正如您所看到的,与类似对象相关的类在逻辑上被分组在一起,正如上面的代码片段所示,表示可能的父/子关系。需要注意的是,即使目录可能包含一个类文件和一个子目录,也不能保证子目录中的文件会扩展该文件。

我认为您处理这个问题的角度不对。当然,如果您知道自己有唯一的函数名,就可以避免使用名称空间。但这是一种非常短视的方法,没有考虑到应用程序的复杂性、结构等

正如Mike所提到的,如果您要使用像Zend或Symfony这样的框架,或者任何其他侧重于面向对象编程的代码,那么我强烈建议您使用名称空间。假设您想要包含一个很棒的PHP包中的类。如果没有名称空间,就无法保证不会发生任何冲突。

此外,像Symfony 2.0这样的新框架要求您使用名称空间。所以你最好习惯它。