mar*_*rio 40
不可以.您可以在声明命名空间后设置变量,但变量将始终存在于全局范围中.它们永远不会绑定到名称空间.您可以从缺少任何名称解析描述中推断出
也没有允许在命名空间中定位变量的语法.
print \namespace\$var; // syntax error
print "${namespace\\var}"; // "unexpected T_NS_SEPARATOR"
Run Code Online (Sandbox Code Playgroud)
小智 19
试试这个
<?php
namespace App\login;
$p = 'login';
$test2 = '\App\\'.$p.'\\MyClass';
$test = new $test2;
Run Code Online (Sandbox Code Playgroud)
Lor*_*uer 11
不,他们不能,正如马里奥所说.
要封装变量,请使用Classes.绝对应该避免污染全局变量空间.
例
class_dbworker.php:
class DbWorker
{
//properties and method logic
}
class DbWorkerData
{
public static $hugerelationsmap = array(....);
public static ....
}
Run Code Online (Sandbox Code Playgroud)
mainapp.php:
include_once 'class_dbworker.php';
print_r( DbWorkerData::$hugerelationsmap );
Run Code Online (Sandbox Code Playgroud)使用命名空间的示例
class_dbworker.php:
namespace staticdata;
class DbWorker
{
//properties and method logic
}
class DbWorkerData
{
public static $hugerelationsmap = array(....);
public static ....
}
Run Code Online (Sandbox Code Playgroud)
mainapp.php:
include_once 'class_dbworker.php';
use staticdata as data;
print_r( \data\DbWorkerData::$hugerelationsmap );
Run Code Online (Sandbox Code Playgroud)