是否有可能使所有功能的變量全球,而不是像global $a, $b, $c...
鍵入所有變量?所有功能的變量是全球
回答
您可以隨時使用$GLOBALS["var"]
,而不是$var
。當然,如果你需要這個,你很可能做錯了。
不,不管怎麼說,這是一件可怕的事情。
爲什麼可怕?你能證明這個嗎?我需要這個用於我的一個功能。 – 2010-05-30 21:06:17
你只需要它,因爲你的設計的其餘部分很糟糕。如何將所需的所有數據封裝在對象中,而不是用它們來污染全局變量空間? – 2010-05-30 21:11:11
關於馬蒂,你是指一種方法,比如我上面的帖子! – RobertPitt 2010-05-31 16:06:51
您可以將它們作爲參數,然後你將不需要0關鍵字:
function(&$a, &$b, &$c)
{
// your code........
}
試試你的應用程序中創建靜態對象,並以該範圍分配變量,就像這樣!
<?php
/*
* Core class thats used to store objects of ease of access within difficult scopes
*/
class Registry
{
/*
* @var array Holds all the main objects in an array a greater scope access
* @access private
*/
private static $objects = array();
/**
* Add's an object into the the global
* @param string $name
* @param string $object
* @return bool
*/
public static function add($name,$object)
{
self::$objects[$name] = $object;
return true;
}
/*
* Get's an object out of the registry
* @param string $name
* @return object on success, false on failure
*/
public static function get($name)
{ if(isset(self::$objects[$name]))
{
return self::$objects[$name];
}
return false;
}
/**
* Removes an object out of Registry (Hardly used)
* @param string $name
* @return bool
*/
static function remove($name)
{
unset(self::$objects[$name]);
return true;
}
/**
* Checks if an object is stored within the registry
* @param string $name
* @return bool
*/
static function is_set($name)
{
return isset(self::$objects[$name]);
}
}
?>
考慮到這文件是包括可以設置任何對象/陣列/可變/資源/等進入這個範圍所述第一文件中的一個。
因此,可以說,你剛剛作出了一個DB連接,這是你用藿它
...
$database = new PDO($dns);
Registry::add('Database',$database);
$DBConfig = Registry::get('Database')->query('SELECT * FROM config_table')->fetchAll(PDO::FETCH_CLASS);
Registry::add('Config',$DBConfig);
沒有腳本中的其他地方,你可以添加或檢索項目。
與Registry::get('ITEM_NEEDED');
這將在方法等多種功能
完美的例子,工作
function insertItem($keys,$values)
{
Registry::get('Database')->query('INSERT INTO items ('.implode(',',$keys).') VALUES ('.implode(',',$values).')');
}
希望它可以幫助
我的意思不是粗魯,但這幾乎是所有使用全局的問題,除了需要更多的輸入(這似乎是OP的主要問題)。 – 2010-05-30 21:58:07
這是我喜歡做事情的方式,如果您有更好的解決方案,請隨時發佈。 – RobertPitt 2010-05-30 22:00:51
這很好,你的答案是完全有效的。我的意思是依靠全球狀態來傳遞數據可能會變得很容易出問題。我寧願使用參數並返回值。 – 2010-05-30 22:11:52
- 1. 全球功能
- 2. 不是全球變量嗎?
- 3. 是否有可能改變iPhone SDK中的全球音量?
- 4. 功能的全局變量
- 5. php - 所有類功能中的全局變量
- 6. 的XCode - 全球功能self.view
- 7. 全球功能中的「this」
- 8. Javascript全球變量
- 9. 全球PHP變量
- 10. Android全球變量
- 11. 全球NSDate變量
- 12. WordPress的全球$後變量是空的
- 13. PHP變量的所有功能?
- 14. 全局變量不是內部功能
- 15. 全局變量空功能
- 16. 功能,並沒有使用全球
- 17. 我應該如何使變量全球所有的PHP
- 18. Hazelcast全球高級功能
- 19. 鈦合金全球功能
- 20. jquery ajaxform全球功能
- 21. 是否有可能在PHP中列出所有全局變量?
- 22. 全球的所有元素
- 23. VB.NET使私有變量全球
- 24. 功能不改變全局變量
- 25. Javascript全球變量數組
- 26. Javascript全球變量問題
- 27. 全球會話變量?
- 28. 變量$ _GET超全球
- 29. 使變量不全球
- 30. 全球NSMutableArray變量xcode
Ouch。這是一種反模式,考慮明確地將變量傳遞給函數/類。 – nuqqsa 2010-05-30 21:06:34
您能否提供更多關於爲什麼以及在何種情況下的信息?我一直在撓頭,試圖理解爲什麼你會有一箇中心功能需要全局功能。 – allnightgrocery 2010-05-30 21:08:48
@Inkspeak:你還可以爲http://thedailywtf.com/編寫代碼嗎? – 2010-05-30 21:10:44