1

特にphpで使用する場合のレジストリパターン$_ENVの違いは何ですか?

それらのどれがより多くのセキュリティとパフォーマンスを提供しますか?

たとえば、多くのコーダーが$_ENV['deflang']だけでなく$config['deflang']とレジストリパターンを使用する理由

前もって感謝します

4

4 に答える 4

2

$_ENV非常に特定の目的があります-それはプロセス環境です。ランダムなデータをそこに投入することは実際には想定されていません。これを実行する場合は、少なくともグローバル(または、より適切には静的クラスメンバー)を使用します。

于 2012-05-01T20:08:54.297 に答える
0

これら2つのことは完全に異なります。

  • $_ENVすべての環境変数を含むスーパーグローバル配列です。
  • $configはユーザー定義変数であり、構成ファイル、データベースなどからのものである可能性があります。

一般的な方法(特に一部のフレームワーク)は、複数の構成と1つの環境変数(たとえばFRAMEWORKNAME_ENV)を含む配列を含む構成ファイルを作成し、アクティブな構成を選択することです。

于 2012-05-01T20:11:11.390 に答える
0

レジストリパターンを使用すると、リソースを遅延ロードできます。

$db = $_ENV['db_connection']; // The connection must be setup prior

vs

$db = $config->get('db_connection');
// An internal method can check for an existing connection 
// and set one up if needed
于 2012-05-01T20:12:19.450 に答える
0

これを試して:

class Registry {

    public static $instance;

    public function set($key, $val) {
        $this->_reg[$key] = $val;
    }
    public function get($key) {
        return $this->_reg[$key];
    }
    public static function Singleton() {
        $class = __CLASS__;
        if (!(self::$instance instanceof $class)) {
            try {
                if (!defined('REQUIRED')) {
                    throw new Registry_Exception('No direct access.');
                }
            } catch (Registry_Exception $e) {}
            self::$instance = new $class();
        }
        return self::$instance;
    }
    private function __construct() {}

}

$registry = new Registry();
$registry->set('setting', 'value');
于 2013-07-31T00:31:53.420 に答える