PHP名称空间可以包含变量吗?如果是这样,这怎么能完成呢?PHP名称空间可以包含变量吗?
回答
不可以。您可以在声明命名空间后设置变量,但变量将始终存在于全局范围内。它们永远不会被绑定到命名空间。您可以在
- FAQ: things you need to know about namespaces(PHP 5> = 5.3.0)
,也将不允许有语法来定位命名空间中的变量推断,从没有任何名称解析描述。
print \namespace\$var; // syntax error
print "${namespace\\var}"; // "unexpected T_NS_SEPARATOR"
试试这个
<?php
namespace App\login;
$p = 'login';
$test2 = '\App\\'.$p.'\\MyClass';
$test = new $test2;
没有他们不能像马里奥说。
封装变量使用类。应该避免污染全局变量空间。
例
class_dbworker.php:
class DbWorker { //properties and method logic } class DbWorkerData { public static $hugerelationsmap = array(....); public static .... }
mainapp.php:
include_once 'class_dbworker.php'; print_r(DbWorkerData::$hugerelationsmap);
实施例中使用名称空间
class_dbworker.php:
namespace staticdata; class DbWorker { //properties and method logic } class DbWorkerData { public static $hugerelationsmap = array(....); public static .... }
mainapp.php:
include_once 'class_dbworker.php'; use staticdata as data; print_r(\data\DbWorkerData::$hugerelationsmap);
这是可以做到 - 那种。
这可能是极坏的,绝不应该做的,但也可以通过使用variable variables和magic constant的命名空间。 所以一个字符串变量来命名我们想用,像这样的变量:
<?php
namespace your\namespace;
$varname = __NAMESPACE__.'\your_variablename'; //__NAMESPACE__ is a magic constant
$namespaced_variable = $$varname; //Note the double dollar, a variable variable
?>
问题是'PHP名称空间是否包含变量?'不是'PHP变量是否可以包含名称空间?' – 2016-04-19 11:40:00
我恳求根据本手册不同意,我们CAN。
http://php.net/manual/en/language.namespaces.dynamic.php
<?php
namespace namespacename;
class classname
{
function __construct()
{
echo __METHOD__,"\n";
}
}
function funcname()
{
echo __FUNCTION__,"\n";
}
const constname = "namespaced";
/* note that if using double quotes, "\\namespacename\\classname" must be used */
$a = '\namespacename\classname';
$obj = new $a; // prints namespacename\classname::__construct
$a = 'namespacename\classname';
$obj = new $a; // also prints namespacename\classname::__construct
$b = 'namespacename\funcname';
$b(); // prints namespacename\funcname
$b = '\namespacename\funcname';
$b(); // also prints namespacename\funcname
echo constant('\namespacename\constname'), "\n"; // prints namespaced
echo constant('namespacename\constname'), "\n"; // also prints namespaced
常量名不是那里的变量,它是一个常量 – m1k3lm 2016-09-16 14:51:24
- 1. 可以在php中包含的文件的名称中使用变量吗?
- 2. PHP包名称空间需要@package吗?
- 3. 包含多个名称空间的XSLT for XML包含多个名称空间
- 4. jQuery事件名称空间是否可以包含破折号?
- 5. 我应该在类名中包含名称空间提示吗?
- 6. 从兄弟引用名称空间LESS变量..可能吗?
- 7. 在estout中包含变量名称以及因子变量值
- 8. 可以定义其他名称空间的少量用法吗?
- 9. 命名空间语句是否可以“包含”在PHP中?
- 10. 我可以在Groovy变量名中包含奇数字符吗?
- 11. 可以包含大部分内存空间的变量?
- 12. PHP是否可以识别包含该对象的变量的名称?
- 13. 使用名称空间并包含库
- 14. 包含jQuery的JavaScript名称空间
- 15. git别名名称中可以包含句点(。)吗?
- 16. 我必须在svcutil.exe命令中包含xml名称空间吗?
- 17. 我应该在名称空间中包含头文件吗?
- 18. jQuery包含变量作为类名称
- 19. PHP命名空间和包含文件
- 20. PHP命名空间和包含()与类
- 21. PHP将文件包含到自定义的“名称空间”中
- 22. 如何使用名称空间包含PHP类
- 23. php获取包含文件的名称空间
- 24. 解析XML与PHP包含名称空间
- 25. XQuery:为不包含名称空间的源文档省略名称空间
- 26. 我可以扩展名称空间为空的xsd元素吗?
- 27. 包含国家和州的名称空间的名称?
- 28. 类名可以用作名称空间吗?
- 29. BASH变量仅包含空间
- 30. 我可以使用常量名称的变量访问PHP类常量吗?
您是否尝试过?如果你尝试过,结果如何? – Charles 2011-03-13 04:07:05