在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的命名空间分隔符?
答案 0 :(得分:5)
我害怕你不能,它与语言紧密相连。无论如何这样的事情真的很难做到,因为其他符号已经在PHP中赋予了它们的含义(。是字符串concatinate,/是divide,*是multiply等)。
答案 1 :(得分:2)
不是不是答案。当然,这只是一个开销问题。除了在编译时提到的重新声明,您可以使用预处理器来获得所需的效果。 (只是效果,而不是实际的语言变化。)
exmaple pihipi
在PHP 5.3之前定义了一个标准的C ++ esque命名空间分隔符。作为第二个例子,有phpp
preprocessor,虽然只允许启用/禁用名称空间。
在Java类语言中使用.
有点暧昧,无法在预处理器中合理地模拟。它在运行时是可行的,但不是在PHP中,并且不是没有关于不同标识符平面的让步。使用::
是可行的,但没有人打扰过。 (也许Quercus PHP实现尝试过,不确定。)