特にphpで使用する場合のレジストリパターンと$_ENVの違いは何ですか?
それらのどれがより多くのセキュリティとパフォーマンスを提供しますか?
たとえば、多くのコーダーが$_ENV['deflang']だけでなく$config['deflang']とレジストリパターンを使用する理由
前もって感謝します
特にphpで使用する場合のレジストリパターンと$_ENVの違いは何ですか?
それらのどれがより多くのセキュリティとパフォーマンスを提供しますか?
たとえば、多くのコーダーが$_ENV['deflang']だけでなく$config['deflang']とレジストリパターンを使用する理由
前もって感謝します
$_ENV
非常に特定の目的があります-それはプロセス環境です。ランダムなデータをそこに投入することは実際には想定されていません。これを実行する場合は、少なくともグローバル(または、より適切には静的クラスメンバー)を使用します。
これら2つのことは完全に異なります。
$_ENV
すべての環境変数を含むスーパーグローバル配列です。$config
はユーザー定義変数であり、構成ファイル、データベースなどからのものである可能性があります。一般的な方法(特に一部のフレームワーク)は、複数の構成と1つの環境変数(たとえばFRAMEWORKNAME_ENV
)を含む配列を含む構成ファイルを作成し、アクティブな構成を選択することです。
レジストリパターンを使用すると、リソースを遅延ロードできます。
$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
これを試して:
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');