PHP 命名空间问题

标签 php namespaces

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

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

最佳答案

它在代码中的使用位置确实有所不同。

例如,在 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();
    }
}

希望这可以帮助!

关于PHP 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575071/

相关文章:

php - 获取内部数组键的数组值

php - 从变量调用命名空间

sql - 无法将 'WITH XMLNAMESPACES...FOR XML PATH' 的输出设置为变量?

php - 找不到类 'Illuminate\support\Facades\Redirect' laravel 5.6

php - 将 MySQL 变量与 PDO Select 语句一起使用

javascript - ajax JSON 调用返回字符串数组而不是对象

php - 使用php将文件夹上的文件拆分为更多文件夹

c++ - 未命名的命名空间

php - 开发相同 PHP 代码的命名空间和非命名空间版本的策略

关于显式(命名)与隐式(全局或根)命名空间的 VB.NET 命名空间问题