PHP命名空间问题

时间:2013-05-15 21:13:50

标签: php namespaces

嘿,我是php命名空间的新手,我正试图理解某些东西。我关注PRO Php MVC e-book,他们在代码中使用了很多名称空间示例。令我困惑的是\Framework\NameFramework\Name之间的区别?

您何时使用哪个版本,以及它们之间的区别。

1 个答案:

答案 0 :(得分:3)

它在代码中的使用位置确实存在差异。

例如,在use语句中,可以使用其中一个:

<?php
namespace Framework;

use Framework\Name;
// OR
use \Framework\Name;
// Both do the same thing

但是,如果您实际上在代码中,而在命名空间前面没有\,则会使代码看起来在文件的当前命名空间中。例如:

<?php
namespace Framework;
// ...
// The below will actually look for the class `\Framework\Framework\Name`
$class = new Framework\Name();
// However, this will look for, and hopefully find `\Framework\Name`
$class = new \Framework\Name();

这使您可以执行在子名称空间上使用use语句以及缩短代码中的调用的操作:示例

<?php
namespace Framework;
use Framework\Cache;

class test {
    public function __construct() {
        // Below gets `\Framework\Cache\Memcache`
        $memcache = new Cache\Memcache();
        // Below gets `\Framework\Cache\Apc`
        $apc = new Cache\Apc();
    }
}

希望这有帮助!