[英]All function's vars are global
是否可以使所有函數的var都成為全局變量,而不用像global $a, $b, $c...
那樣鍵入所有變量?
嘗試在您的應用程序中創建一個Static對象,然后將變量分配給該作用域,就像這樣!
<?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]);
}
}
?>
考慮到此文件是其中包含的第一個文件,您可以在此范圍內設置任何對象/數組/變量/資源/等。
因此,假設您剛剛建立了數據庫連接,這是您使用它的原因
...
$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).')');
}
希望能幫助到你
否。無論如何,這將是一件可怕的事情。
您可以將它們作為參數傳遞,然后就不需要global
關鍵字:
function(&$a, &$b, &$c)
{
// your code........
}
您可以始終使用$GLOBALS["var"]
代替$var
。 當然,如果您需要這樣做,很可能您做錯了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.