2017-06-06 93 views
1

我有一點疑問,我明白使用全局變量是一種不好的做法。PHP MVC Globals Variables

我有一個小的MVC應用程序與PHP,我想創建一個文件..所謂的config.php和裏面,保存全局變量,我將在我的班,例如...

現在
$config = array(); 
$config ['db_host'] = 'localhost'; 

,我想知道什麼是推薦的方式,包括在我的應用程序文件。我已經實現了自動加載,我可以將它包括在這個...

Class Autoload 
{ 
    public function __construct() { 
     global $ config; 
     require_once 'config.php'; 
    } 
} 

但我真的不知道這是否是一種好的做法...

非常感謝你提前..

+0

這不是一個好的做法 –

+0

嗨,感謝您的快速回復。你能幫我找到一個更好的方法來做到這一點嗎?我真的無法想到另一個。非常感謝? –

回答

2

一般來說,使用全局或單例不是一個好習慣。你想要什麼就叫做「依賴注入」。該模式使您可以使用模擬對象進行測試。本文中提供了依賴注入的一些原理和實踐。 https://iconoun.com/blog/2017/05/05/php-globals-vs-dependencies/

+0

哇! ..優秀的文章,我正在閱讀,當完成閱讀它,當然你採取我最好的答案..很多,非常感謝這篇優秀的文章 –

0

而是全局的,你可以創建一個class,這樣

class Autoload { 

    public $value1; 
    public $value2; 
    public static instances = array(); 

    public static function instantiate($className) { 
     if (isset($instances[$className])) { 
      return $instances[$className]; 
     } 
     $newInstance = new $className(); 
     $newInstance->value1 = "foo"; 
     $newInstance->value2 = "bar"; 
     return $instances[$className] = $newInstance; 
    } 
} 

你可以繼承這個class更具體的情況下,例如,不同的用戶類型。