xiaoyu9965
V2EX  ›  PHP

laravel 中遇到一个纠结的问题!

  •  
  •   xiaoyu9965 · Jun 10, 2015 · 3885 views
    This topic created in 4164 days ago, the information mentioned may be changed or developed.

    在laravel中:
    $a = "myClass";
    $b = new $a();
    //—— laravel 告诉我 myClass 找不到
    但是 我直接
    $b = new myClass();
    这样做没问题

    13 replies  •  2015-06-10 20:09:15 +08:00
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    1
    有同学遇到过这样的问题吗?
    haiyang416
    haiyang416
    Jun 10, 2015 via Android
    2
    你需要完全限定名,包括命名空间。
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    3
    @haiyang416
    即使在项目中我这样样子,依然无法找到对应的class
    $tmp = 'App\Handlers\Library\ks3\core\Signers\DefaultUserAgentSignerDefaultUserAgentSigner';
    $signer = new $tmp;
    haiyang416
    haiyang416
    Jun 10, 2015 via Android
    4
    命名空间用绝对地址,前面那个斜杠加上再试试,如果还不行那你需要确认下自动加载里是否注册了这个类了。
    haiyang416
    haiyang416
    Jun 10, 2015 via Android
    5
    最好看下自动加载失败的提示,看类名是否正确。
    mcfog
    mcfog
    Jun 10, 2015
    6
    用::class语法不就完事儿了
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    7
    @mcfog ::class 和字符串怎么用 eval ?
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    8
    @mcfog 能给个示例吗?
    yyinsomnia
    yyinsomnia
    Jun 10, 2015
    9
    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
    多看手册~
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    10
    @yyinsomnia 方便给个地址吗?
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    12
    @yyinsomnia 你试试 跟你说的似乎不同
    xiaoyu9965
    xiaoyu9965
    OP
    Jun 10, 2015
    13
    感谢大家的帮助,是我太悲剧了,名字拼写错误!谢谢大家
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 08:01 · PVG 16:01 · LAX 00:01 · JFK 03:01
    ♥ Do have faith in what you're doing.