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