2013-05-15 158 views
1

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

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

回答

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

希望这有助于!

+0

好的,谢谢,这对我更有意义 – Dblock247