回答
與PHP5.2及以下,你根本無法做到這一點。一旦它是全球性的,它就是全球性的。
但是從5.3開始,有Namespacing,它允許不同級別的範圍。
在這裏看到:http://www.ibm.com/developerworks/opensource/library/os-php-5.3new3/index.html
我的文件中的全局變量是否可以在其他文件中訪問,而不包括我的PHP文件,並且僅僅使用我的變量的全局聲明? – user774250 2011-12-25 18:18:53
答案有點讓人誤解。命名空間不允許限制變量的作用域,但是隻處理某些東西的名字。 – hakre 2011-12-25 21:58:36
@ user774250:全局變量可以(永遠)隨處訪問(全局)。 – hakre 2011-12-25 21:59:08
你可以使用匿名函數:
<?php
$x = function() {
$local_global = "nyah can't access me from outside";
... do your stuff ...
}
$x();
這不是根據OP的問題,而是內部的功能之外。 – Gordon 2011-12-25 18:25:49
只有兩種方法可以在PHP中隱藏變量。命名空間和匿名函數。 – 2011-12-25 18:27:02
但我想在我的文件中的多個函數中使用$ local_global。它會起作用嗎? – user774250 2011-12-25 18:29:32
這可能是最不雅的解決方案永遠,但對於大多數情況下,它可以在無需將變量傳遞給每一個工作功能,這是你不想做的事情。
只需創建一個函數,它將返回需要的值作爲「全局」,並在需要時調用該函數。既然你說你想要的只是裏面一個php文件中要訪問這個變量,只是把這個定義功能有:
function faux_global()
{
$faux_global_var = 'This is supposed to be global';
return $faux_global_var;
}
我想很多功能使用的常數變量。但它的用途僅限於我的模塊,不應該打擾其他的代碼。其實我正在研究Drupal。
我不太瞭解drupal模塊的要求,但是您描述的內容聽起來像是受保護的常量或變量。由於受保護的常量不存在,唯一的選擇是受保護的變量。只需將所有的模塊函數代碼放入一個或多個可以訪問受保護的成員變量的類,就可以了。
class MyModule
{
protected $variable;
public function myFunction()
{
$this->$variable; # accessible only within MyModule functions.
}
}
只要你只使用一個類,一個私有變量就可以工作。
- 1. 訪問drupal的全局變量到另一個php文件
- 2. 全局變量只能通過第一個函數訪問嗎?
- 3. PHP訪問全局變量的問題
- 4. 如何在兩個php文件中訪問全局變量?
- 5. 無法訪問一個全局變量
- 6. 訪問一個全局變量
- 7. 無法訪問一個全局變量
- 8. 目標C從另一個文件訪問的全局變量
- 9. 訪問PHP全局變量的方法
- 10. 將某些php文件限制爲只能訪問特定變量
- 11. 從smarty訪問PHP文件的變量(本地或全局)
- 12. 從定製的Javascript文件訪問SugarCRM全局變量$ current_user v6.5
- 13. PHP - 用'()'或'全局'來訪問一個閉包中的全局變量?
- 14. luabind:不能訪問全局變量
- 15. 無法訪問全局變量功能
- 16. 通過變量全局訪問控制
- 17. 全局訪問變量權限,設置在我的CakePHP AppController中
- 18. 我如何訪問所有文件中的全局變量
- 19. 爲什麼我不能訪問這個全局變量?
- 20. 訪問javascript全局變量
- 21. 訪問全局變量
- 22. 全局訪問變量
- 23. JSP訪問全局變量
- 24. AS3:訪問全局變量
- 25. 訪問全局變量
- 26. 訪問全局變量
- 27. 訪問全局變量inPerformed
- 28. 訪問全局變量
- 29. 全局類訪問變量
- 30. Javascript全局變量訪問
允許我一個愚蠢的問題:爲什麼不把它作爲參數傳遞給你的函數呢?你將以這種方式解決兩個問題。 – 2011-12-25 18:13:32
我想要一個常量變量被許多函數使用。但它的用途僅限於我的模塊,不應該打擾其他的代碼。其實我正在研究Drupal。 – user774250 2011-12-25 18:16:14
PHP沒有文件範圍這樣的東西。 – Gordon 2011-12-25 18:29:29