
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 |
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 看完这个以后就不会再问了:《 PHP 命名空间 解惑》 https://lvwenhan.com/php/401.html |
8 hoythan OP |
11 qiyon 2017-07-05 17:38:04 +08:00 可以试试: ``` $class_name = \v2ex\test::class; $obj = new $class_name(); ``` |