停止在PHP中使用“global”我有一個(gè)config.php包含在每一頁中。在配置中,我創(chuàng)建了一個(gè)類似于以下內(nèi)容的數(shù)組:$config = array();$config['site_name'] = 'Site Name';$config['base_path'] = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';//etc...那我就有了function.php,這也包括在幾乎每一頁,其中我必須使用global $config才能接觸到它-而且這,這個(gè)就是我想擺脫的東西!我如何訪問$config在代碼的其他部分中,而不使用global?有人能解釋一下嗎為什么我不應(yīng)該用global以我為例?有人說這是不好的語氣,另一些人說這不安全?編輯1:我在哪里以及如何使用它的例子:function conversion($Exec, $Param = array(), $Log = '') {
global $config;
$cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
foreach ($Param as $s)
{
$cmd .= ' ' . $s;
}
}編輯2:把所有這些都放到課堂上,就像維爾克斯,但在本例中,我將如何將其與正在提取配置的下面的循環(huán)綁定key和value從數(shù)據(jù)庫。我把分配的想法簡單化了$config數(shù)組,下面是一個(gè)示例:$sql = "SELECT * from settings";$rsc = $db->Execute($sql);if ( $rsc ) {
while(!$rsc->EOF) {
$field = $rsc->fields['setting_options'];
$config[$field] = $rsc->fields['setting_values'];
@$rsc->MoveNext();
}}編輯3:另外,我還得去找其他人vars來自在config中設(shè)置的函數(shù),并且它們很少,例如:$db, $language等等。如果我把它們放到課堂上,它真的能解決任何問題嗎?如果我用global它真正改變了什么?編輯4:我讀PHP全局函數(shù)哪里高登用一種很好的方式解釋了為什么你不應(yīng)該用global..我同意每件事,但我不使用global在我的例子中,重新分配變量,這會(huì)導(dǎo)致,就像他說的,<-- WTF!!是的,同意,這太瘋狂了。但是,如果我只需要從一個(gè)函數(shù)訪問數(shù)據(jù)庫,只需使用global $db這個(gè)案子的問題在哪里?您如何做到這一點(diǎn),否則,不使用global?編輯5:在相同的PHP全局函數(shù)中欺騙說:“反對(duì)全球的一個(gè)主要原因是,這意味著該功能依賴于另一個(gè)范圍。這將很快變得混亂?!钡艺f的是基本的“INIT”。我基本上define但使用vars-這在技術(shù)上是錯(cuò)誤的。但是您的函數(shù)不依賴于任何東西-而是一個(gè)var的名稱。$db你能記住嗎?它確實(shí)是全球需要使用的$db,這里的依賴項(xiàng)在哪里,否則如何使用它?P.S.我剛想到,我們正面臨著兩種不同思想的沖突,例如:水雷(但不太了解面向?qū)ο蟮木幊?和那些在OOP中可以被稱為大師(從我目前的觀點(diǎn)來看)的人-對(duì)他們來說顯而易見的事情-出現(xiàn)了新的問題。我想這就是為什么這個(gè)問題被一遍又一遍地問下去的原因。就我個(gè)人而言,它畢竟變得更清楚了,但仍然有一些事情需要澄清。
3 回答

犯罪嫌疑人X
TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
class Config{ public static $SiteName = 'My Cool Site';}function SomeFunction{ echo 'Welcome to ' , Config::$SiteName;}
CFG_SITE_NAME
- 3 回答
- 0 關(guān)注
- 665 瀏覽
添加回答
舉報(bào)
0/150
提交
取消