Ne Yapılandırma Dosyaları iyi Dosya Formatı mı

5 Cevap php

PHP bir çerçeve oluşturmak ve birkaç yapılandırma dosyaları olması gerekir duyuyorum. Bu dosyaların bazıları kaçınılmaz girişlerin büyük bir numarası olacak.

Ne biçim bu ayar dosyaları için iyi olurdu?

İşte en iyi benim sayısallaştırılmasıdır:

  1. Kolayca PHP tarafından. Ben herhangi bir ayrıştırma kod yazmak yoktu ama bu bir anlaşma kırıcı değil, eğer güzel olurdu.
  2. Kolayca girişlerinin büyük miktarda vardır bile insanlar tarafından okunan Remains
  3. Yaygın olarak kullanılan standart, hiçbir özel biçimleri
  4. Kısa ve özlü takdir

Ben XML kullanarak başladı, ama hızla bariz nedenlerle vazgeçti. JSON ve YAML düşündüm ama orada başka ne görmek istedim.

5 Cevap

Nasıl bir INI dosya biçimi hakkında? Bu fiili bir yapılandırma dosyası, standart, ve PHP bu biçimi için yerleşik bir ayrıştırıcı vardır:

parse_ini_file

YAML is a good option: http://www.yaml.org/

Bu çok, çok basit ve güçlü

Ruby projeler yapılandırma için bunu çok kullanırım.

Neden yapılandırması için bir PHP dosyası kullanmak değil mi?

Yararları açıktır:

  • olası hataları otomatik yakalanmayın olacak
  • özel bir çözümleyici oluşturmak / kullanmaya gerek yok
  • Bu çılgınca PHP programcıları tarafından anlaşılması oluyor
  • Eğer üretim için diğer kalkınma için özel yapılandırmalar kullanarak, örneğin bazı özel mantık, vb olabilir

Django ve raylar gibi diğerleri çerçeveler bir betik bir yapılandırma dosyası kullanır.

Başka bir seçenek JSON ve json_encode ve json_decode kullanmak olacaktır.

Eğer yapılandırma parametreleri zengin veri yapılarını kullanmak mümkün olacaktır.

Personly Ben bir sınıfta yapılandırma veri yapmak ister.

class appNameConfig
 {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

Daha sonra yapmanız gereken tek şey bunları kullanmak için

$config = new appNameConifg;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

Yapmanız gereken tek şey ben böyle bir işlevi kullanmak içinde sınıfı ile dosya okunur yapılandırma değiştirmek için:

function updateConfig($parameter, $value)
 {
    $fh = fopen('config.php', 'w+');
    while(!feof($fh))
     {
    	$file .= fgets($fh);
     }
    $fileLines = explode("\n", $file);
    for($i=0;$i<count($fileLines);$i++)
     {
    	if(strstr($fileLines[$i], $parameter))
    	 {
    		$fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
    	 }
     }
    $file = implode("\n", $fileLines);
    fwrite($fh, $file);
    fclose($fh);
 }