关于您喜欢使用PHP名称空间或类前缀的快速提问。
<?php
// ----- namespace -----
use My\Namespace;
$object = new Namespace\Object;
// ----- prefix with PR -----
$object = new PF_Object; //or
$object = new PFObject;
开发人员更喜欢哪个?我知道为什么命名空间的使用可以为应用程序带来很大的好处,但在我看来,PHP也是一个很大的障碍。
谢谢!
答案 0 :(得分:2)
将use
与别名结合使用:
use My\Namespace\Foo as Foo;
$object = new Foo;
它也很有用:
namespace My\Debug\Stuff;
use My\Production\Stuff\Foo as BaseFoo;
class Foo extends BaseFoo {}
答案 1 :(得分:2)
为什么要将名称空间视为障碍?
在我看来,类前缀似乎是一种实现“在代码中”实现命名空间的机制的黑客攻击。现在,较新的代码可以选择使用本机内置的方式处理命名空间。在我非常谦虚的意见中,这是一种更清洁的方法。
考虑这个流行但令人大开眼界的例子,它允许遗留代码使用命名空间:
// 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();
?>
答案 2 :(得分:0)
显然,不再需要将下划线字符用于伪命名空间,所以我想问题归结为“在类名中使用下划线字符是个好主意”。 / p>
IMO,答案是否定的,首先是因为它看起来很丑(IMO),其次是因为一些较旧的类加载器可能会被包含下划线的类名混淆。
答案 3 :(得分:0)
好
如果您正在运行PHP 5.2.X
,则只有选项2
但如果您正在运行PHP 5.3.X
,则可以同时使用它们。
在运行PHP 5.3.X
的情况下,我会使用该语言的新版本提供的功能。进行类比可能是运行JAVA 1.6并且不使用泛型(或类似的)