class test{
public function run()
{
echo 'success';
}
}
$class = 'test';
new $class();
这样是可以
namespace v2ex
class test{
public function run()
{
echo 'success';
}
}
$class = 'v2ex\test';
new $class();
这样是不可以
怎么办
1
holyghost 2017-07-05 16:25:24 +08:00 1
|
2
gouchaoer 2017-07-05 16:27:14 +08:00
不要去用没有定义的行为
|
3
liuhaotian 2017-07-05 16:28:32 +08:00
namespace V2EX 后面漏了一个分号
|
4
wkan 2017-07-05 16:33:05 +08:00
可能是 namespace V2EX 后面少个分号 :doge:
|
5
hoythan OP @liuhaotian
@wkan 分号在的,我是用了 composer 的自加载,然后在头部定义了 use xxx\v2ex; 然后在代码中如果使用 $class = 'v2ex\\test'; new $class(); 就会报错。Uncaught Error: Class,前面加 \\也试过不可以 如果我直接写 new v2ex\text(); 可以执行。 |
6
johnlui 2017-07-05 17:00:49 +08:00 1
看完这个以后就不会再问了:《 PHP 命名空间 解惑》 https://lvwenhan.com/php/401.html
|
8
hoythan OP |
11
qiyon 2017-07-05 17:38:04 +08:00 1
可以试试:
``` $class_name = \v2ex\test::class; $obj = new $class_name(); ``` |