我使用 namespace
作为类,如下所示,
class_tidy.php,
namespace foo;
class tidy {
public function hello() {
echo 'Hello';
}
}
索引.php,
class MyAutoloader
{
public static function load($className)
{
$parts = explode('\\', $className);
require 'classes/class_'.end($parts) . '.php';
}
}
spl_autoload_register("\MyAutoloader::load");
$test = new foo\tidy();
$test->hello();
它工作得很好,但我想知道我是否可以访问该类,而不是,
$test = new foo\tidy();
但是,
$test = new foo::tidy();
看起来更漂亮。但是有这个错误,
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' ...
最佳答案
你不能。 PHP 语法使用 \
作为命名空间。
事实上,php 仅将 T_PAAMAYIM_NEKUDOTAYIM(这是双冒号的名称)用于一件事,即在类名之后使用它来指定您想要该类的成员。
我确实相信在它的工作方式中有一些模糊的细节阻止了 PHP 将它也用作命名空间分隔符,但我不知道是哪个。 (问题是,这意味着即使您从官方 php 分支并制作您自己的版本,您也必须完成大量工作才能获得您想要的轻微语法更改。)
关于PHP:如何使用::而不是\访问命名空间类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253001/