hoythan
V2EX  ›  PHP

PHP 的变量类如何使用 namespace ?

  •  
  •   hoythan · Jul 5, 2017 · 3305 views
    This topic created in 3261 days ago, the information mentioned may be changed or developed.
    class test{
    	public function run()
        {
        	echo 'success';
        }
    }
    
    $class = 'test';
    
    new $class();
    

    这样是可以

    namespace v2ex
    class test{
    	public function run()
        {
        	echo 'success';
        }
    }
    
    $class = 'v2ex\test';
    new $class();
    

    这样是不可以

    怎么办

    11 replies    2017-07-05 17:38:04 +08:00
    holyghost
        1
    holyghost  
       Jul 5, 2017   ❤️ 1
    奇怪,我这是可以的

    gouchaoer
        2
    gouchaoer  
       Jul 5, 2017
    不要去用没有定义的行为
    liuhaotian
        3
    liuhaotian  
       Jul 5, 2017
    namespace V2EX 后面漏了一个分号
    wkan
        4
    wkan  
       Jul 5, 2017
    可能是 namespace V2EX 后面少个分号 :doge:
    hoythan
        5
    hoythan  
    OP
       Jul 5, 2017
    @liuhaotian
    @wkan
    分号在的,我是用了 composer 的自加载,然后在头部定义了
    use xxx\v2ex;

    然后在代码中如果使用

    $class = 'v2ex\\test';
    new $class();

    就会报错。Uncaught Error: Class,前面加 \\也试过不可以

    如果我直接写

    new v2ex\text();

    可以执行。
    johnlui
        6
    johnlui  
       Jul 5, 2017   ❤️ 1
    看完这个以后就不会再问了:《 PHP 命名空间 解惑》 https://lvwenhan.com/php/401.html
    hoythan
        7
    hoythan  
    OP
       Jul 5, 2017
    @johnlui 如果是说 \ 的话 确实不是这个问题,加不加都一样报错
    hoythan
        8
    hoythan  
    OP
       Jul 5, 2017
    @johnlui 或者你的意思是 use xxx\v2ex; 不写
    直接改成
    new \xxx\v2ex\test();
    ?
    hoythan
        9
    hoythan  
    OP
       Jul 5, 2017
    @johnlui 果然,不用 use 直接写才行。
    hoythan
        10
    hoythan  
    OP
       Jul 5, 2017
    @johnlui 看不懂原理
    qiyon
        11
    qiyon  
       Jul 5, 2017   ❤️ 1
    可以试试:
    ```
    $class_name = \v2ex\test::class;
    $obj = new $class_name();
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5525 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 06:06 · PVG 14:06 · LAX 23:06 · JFK 02:06
    ♥ Do have faith in what you're doing.