在laravel中:
$a = "myClass";
$b = new $a();
//—— laravel 告诉我 myClass 找不到
但是 我直接
$b = new myClass();
这样做没问题
1
xiaoyu9965 OP 有同学遇到过这样的问题吗?
|
2
haiyang416 2015-06-10 19:14:19 +08:00 via Android
你需要完全限定名,包括命名空间。
|
3
xiaoyu9965 OP @haiyang416
即使在项目中我这样样子,依然无法找到对应的class $tmp = 'App\Handlers\Library\ks3\core\Signers\DefaultUserAgentSignerDefaultUserAgentSigner'; $signer = new $tmp; |
4
haiyang416 2015-06-10 19:45:47 +08:00 via Android
命名空间用绝对地址,前面那个斜杠加上再试试,如果还不行那你需要确认下自动加载里是否注册了这个类了。
|
5
haiyang416 2015-06-10 19:46:59 +08:00 via Android
最好看下自动加载失败的提示,看类名是否正确。
|
6
mcfog 2015-06-10 19:48:45 +08:00
用::class语法不就完事儿了
|
7
xiaoyu9965 OP @mcfog ::class 和字符串怎么用 eval ?
|
8
xiaoyu9965 OP @mcfog 能给个示例吗?
|
9
yyinsomnia 2015-06-10 19:53:58 +08:00
because there is no difference between a qualified and a fully qualified Name inside a dynamic class name, function name, or constant name, the leading backslash is not necessary
多看手册~ |
10
xiaoyu9965 OP @yyinsomnia 方便给个地址吗?
|
11
haiyang416 2015-06-10 19:59:04 +08:00 via Android
|
12
xiaoyu9965 OP @yyinsomnia 你试试 跟你说的似乎不同
|
13
xiaoyu9965 OP 感谢大家的帮助,是我太悲剧了,名字拼写错误!谢谢大家
|