PHP中使用命名空间的例子…
use 'MyLibrary'Registry;
use 'MyLibrary'User;
use 'MyLibrary'Request;
namespace MyLibrary'Base
{
class Base
{
public $registry;
function __construct($registry)
{
$this->registry = $registry;
$this->user = New User;
$this->request = new Request;
# code...
}
}
}
现在在c#中命名空间分隔符更像这样…
using MyLibrary.Registry;
using MyLibrary.User;
using MyLibrary.Request;
namespace MyLibrary.Base
{
public partial class Base
{
public MyFunction(registry)
{
Code here
}
}
}
我知道有很多关于PHP命名空间分隔符的抱怨,糟糕到有些人甚至不使用它们,因为他们讨厌当前的反斜杠。
所以我很好奇,是否有任何方法可以定义自己的命名空间分隔符在PHP中使用?
恐怕不行,这是语言固有的。这样的事情无论如何都很难做到,因为其他符号已经在PHP中被赋予了意义()。是字符串连接,/是除法,*是乘法,等等)。
不是个答案。当然这只是开销的问题。除了前面提到的在编译时的重新声明之外,您还可以使用预处理器来达到期望的效果。(只是效果,不是真正的语言变化。)
例如,pihipi
在PHP 5.3之前定义了一个标准的c++风格的命名空间分隔符。第二个例子是phpp
预处理器,尽管它只允许启用/禁用名称空间。
在java类语言中使用.
有点模棱两可,不能在预处理器中合理地模拟。它在运行时是可行的,但在PHP中不可行,并且必须在不同的标识符平面上做出让步。使用::
是可行的,但还没有人为此烦恼。(也许Quercus PHP实现尝试过,不确定)