1

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

您什么时候使用哪个版本,它们之间有什么区别。

4

1 回答 1

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();
    }
}

希望这可以帮助!

于 2013-05-15T21:21:56.557 回答