V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
czheo
V2EX  ›  PHP

namespace与autoload同时使用的问题

  •  
  •   czheo · 2013-11-26 18:12:54 +08:00 · 3804 次点击
    这是一个创建于 4006 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ############ A.php ################

    namespace NS;
    function __autoload($classname){
    echo $classname;
    }
    class A {
    function foo(){
    $b = new B;
    }
    }

    ############### B.php ###############

    namespace NS;
    class B {}

    ##########################################
    php5.3代码,调用A.php时,__autoload不会被自动运行。怎么破?
    5 条回复    1970-01-01 08:00:00 +08:00
    bixuehujin
        1
    bixuehujin  
       2013-11-26 18:28:34 +08:00   ❤️ 1
    自动调用的是全局命名空间下的__autoload, 其他命名空间下的自然不会调用。
    czheo
        2
    czheo  
    OP
       2013-11-26 19:09:08 +08:00 via iPhone
    @bixuehujin 理解。那要实现类似目的有什么best practice么?
    barbery
        3
    barbery  
       2013-11-26 20:26:26 +08:00
    1楼不是说的很清楚了么? 你在全局命名空间下弄个__autoload ,在class A里面 new B的时候加上命名空间 new \B_NAMASPACE\B()
    thbourlove
        4
    thbourlove  
       2013-11-26 20:34:01 +08:00
    wesley
        5
    wesley  
       2013-11-27 12:19:42 +08:00
    在A.php中加一行
    spl_autoload_register('\NS\__autoload');
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.