变量中的PHP命名空间类

时间:2012-09-19 16:16:17

标签: php namespaces

任何人都可以解释为什么以下代码导致“无法找到类”错误?使用完全限定名称实例化类,但消除了“use”语句的优点。

<?php

namespace
{
    use Foo\Bar;

    new Bar;    // Works

    $class = 'Foo\Bar'; 

    new $class; // Works

    $class = 'Bar';

    new $class; // "Cannot find class" error
}

namespace Foo
{
    class Bar {}
}

由于

1 个答案:

答案 0 :(得分:2)

嗯,我想它实际上是feature。别名在这里没有帮助,原因相同:

  

导入在编译时执行,因此不会影响动态   类,函数或常量名。 [...]

<?php 
use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another; // instantiates object of class My\Full\Classname
$a = 'Another'; 
$obj = new $a;      // instantiates object of class Another 
?>

是的,它有点破坏use与动态类的目的。