Note: Yapılandırma Bir PHP dosyasında muhafaza ediliyor, config.php
.
Ben farklı, burada (Ben bu örneklerde DB bilgi depolamak ediyorum) örnekler kısa bir liste yapmış gördüm:
Sabitler: küresel, readonly
define('DB_USER','user12');
define('DB_PASS','21user');
Global değişken, tekrarlayan, diğer globalleri ile karışık: Global dizi kullanma
$GLOBALS['DB_USER']='user12';
$GLOBALS['DB_PASS']='21user';
Global olmayan bir dizi kullanarak ama globaly kaldırdı: 2 seçeneği daha muhtemelen kötü
$config=array(); ...
$config['DB_USER']='user12';
$config['DB_PASS']='21user';
... global $config;
mysql_connect('localhost',$config['DB_USER'],$config['DB_PASS']);
Sınıf özelliklerini tanımlama: (küresel, sayılamazdır)
class Config {
public $DB_USER='user12';
public $DB_PASS='21user';
}
Kriterler / Seçenekler / Özellikler:
- kodlama kolaylığı: Eğer ayar varsa kontrol etmek istiyorsanız, ya da başlatmak olmaz
- modifikasyon kolaylığı: Bir non-programmer/layman kolayca ayarlarını değiştirebilir
- temiz bir yerde saklanır: diğer değişkenler ile karışık olmayan (bir alt-dizide saklanabilir)
- zamanı değişiklik: Bazı durumlarda, diğer Devs kolayca mevcut ayarlarını değiştirebilirsiniz
Yapılandırma sisteminin çalışması sırasında bir süre değiştirilmesi gerekebilir, bu yüzden seçenek 1 zaten geçerli değildir. Üçüncü seçenek ya da çok temiz değil.
Bunu yazarken, ben subjektif ve kapalı olmak tartışma büyük bir uyarı alıyorum. Yani please konuya tutmak ve cevaplar için geçerli nedenler vermek.
Bu oldukça açık bir soru, ve ben farklı cevapları ile iyi tanıdık olduğum düşünülürse, neden bütün bu yaygara yapıyorum, diye sorabilirsiniz? Şey / bir çerçeve geliştirilmesi ediyorum ve başka bir kapsamda (* ahem * joomla * ahem *) aksine ben değiştirilmesi zorunda biter miss-bilgili çözüm atma onların hata geçmek istemiyorum, bir Gelecekte yeniden amaçlı.
Edit: First of, the location of the config file does not concern me. I'll make sure people can easily change location, if they want to, but this will not be a requirement. First of, cheap webhosts does not allow doing this, secondly, as far as security goes, this is really not a good option. Why? Because, the framework needs to know where the config is. Really, security through obscurity does not work. I'd rather fix all RFI and XSS (for instance) than be paranoid on hiding the config file under several layers.