PHP类命名空间与前缀

| 关于您偏好使用PHP名称空间或类前缀的一个简短问题。
<?php
// ----- namespace -----
use My\\Namespace;
$object = new Namespace\\Object;

// ----- prefix with PR -----
$object = new PF_Object; //or
$object = new PFObject;
开发人员更喜欢哪个?我知道为什么使用命名空间可以为应用程序带来巨大的优势,但我个人认为这在PHP中也可能是一个很大的障碍。 谢谢!     
已邀请:
        将ѭ1与别名混合:
use My\\Namespace\\Foo as Foo;

$object = new Foo;
这样也很有用:
namespace My\\Debug\\Stuff;
use My\\Production\\Stuff\\Foo as BaseFoo;

class Foo extends BaseFoo {}
    
        您为什么会认为名称空间是一个障碍? 在我看来,类前缀似乎是一种实现“以代码形式”的机制,一种实现名称空间的机制。 较新的代码现在可以选择使用本机内置的方式处理名称空间。我非常谦虚地认为,这是一种更清洁的方法。 考虑以下流行但令人大开眼界的示例,该示例允许旧版代码使用名称空间:
// Using native namespace features to shorten class prefixes

<?php
use Sabre_DAV_Auth_Backend_PDO as AuthBackend;
use Zend_Controller_Action_Helper_AutoComplete_Abstract as AutoComplete;

$backend = new AuthBackend();
?>
    
        显然,不再需要使用下划线字符来伪造名称空间,因此我认为问题归结为“在类名中使用下划线字符是否是一个好主意”。 IMO,答案是否定的,首先是因为它看起来很丑(IMO),其次是因为某些较老的类加载器可能会因包含下划线的类名称而感到困惑。     
        好 如果您正在运行
PHP 5.2.X
,则只有选项2 但是如果您正在运行
PHP 5.3.X
,则可以同时使用两者。 在运行running6的情况下,我将使用新版本语言提供的功能。打个比方可能是在运行JAVA 1.6并且不使用泛型(或类似类型)     

要回复问题请先登录注册