在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 感谢大家的帮助,是我太悲剧了,名字拼写错误!谢谢大家 |