只是一个关于您喜欢使用PHP名称空间或类前缀的快速问题。
<?php
// ----- namespace -----
use MyNamespace;
$object = new NamespaceObject;
// ----- prefix with PR -----
$object = new PF_Object; //or
$object = new PFObject;
开发人员更喜欢哪一个?我知道为什么名称空间的使用可以给应用程序带来巨大的优势,但在我自己看来,在PHP中也会成为一个障碍。
谢谢!
将use
与别名组合
use MyNamespaceFoo as Foo;
$object = new Foo;
它也很有用:
namespace MyDebugStuff;
use MyProductionStuffFoo 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
,则可以同时使用这两种功能。
在我运行PHP 5.3.X
的情况下,我将使用该语言的新版本提供的功能。做一个类比可能是运行JAVA 1.6,并且不使用泛型(或类似的)