czheo
V2EX  ›  PHP

namespace与autoload同时使用的问题

  •  
  •   czheo · Nov 26, 2013 · 4936 views
    This topic created in 4726 days ago, the information mentioned may be changed or developed.
    ############ 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 replies  •  1970-01-01 08:00:00 +08:00
    bixuehujin
    bixuehujin
    Nov 26, 2013❤️1
    1
    自动调用的是全局命名空间下的__autoload, 其他命名空间下的自然不会调用。
    czheo
    czheo
    OP
    Nov 26, 2013 via iPhone
    2
    @bixuehujin 理解。那要实现类似目的有什么best practice么?
    barbery
    barbery
    Nov 26, 2013
    3
    1楼不是说的很清楚了么? 你在全局命名空间下弄个__autoload ,在class A里面 new B的时候加上命名空间 new \B_NAMASPACE\B()
    thbourlove
    thbourlove
    Nov 26, 2013
    4
    wesley
    wesley
    Nov 27, 2013
    5
    在A.php中加一行
    spl_autoload_register('\NS\__autoload');
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4522 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:39 · PVG 17:39 · LAX 01:39 · JFK 04:39
    ♥ Do have faith in what you're doing.