PHP中的命名空间在使用它时是否会使命名空间内的所有内容都被传递?

时间:2013-08-08 13:27:34

标签: php namespaces

如果我有以下代码:

namespace System
{
    namespace Models
    {

        $modelsFolder = "Models";
        require_once( "../$modelsFolder/Site.php" );
        require_once( "../$modelsFolder/Session.php" );
        require_once( "../$modelsFolder/Form.php" );
        require_once( "../$modelsFolder/Recaptcha.php" );
        require_once( "../$modelsFolder/AppCred.php" );
        require_once( "../$modelsFolder/User.php" );
        require_once( "../$modelsFolder/Database.php" );
    }

    namespace Controllers
    {
        namespace System\Models;
        $db = new Database();       
    }
}

如果在我的控制器文件中,我总是声明:

namespace System\Controllers;

$db->Query(); // will this work because it has been declared in the namespace Controllers?

$ db的实例是否会被带入此文件?或者我是否需要在命名空间之外声明我的$ db并在包含控制器文件之前包含它?

1 个答案:

答案 0 :(得分:0)

变量不受名称空间的影响。您正在创建的是一个常规全局变量,其范围不受任何限制。范围!=命名空间。