Ayarları saklamak, PHP, daha sonra düzenlemek için

7 Cevap php

Ben bir web arayüzü üzerinden ayarlarını düzenlemek için yeteneğine sahip olacak bir PHP uygulama yazıyorum. Ben kullanıcı için istemedim (ve aslında, sadece admins olacak) bir metin editörü ile dosyayı yüklemek mümkün, ama daha ziyade, bir formu kullanarak bir değişiklik yapmak ve bu ayarları dosyasını değiştirmek (ve do other things as well) olacaktır.

Gelişiminde Bu aşamada, ayarlar, örneğin, bir dosya PHP depolanır:

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

Ancak, bu kadar eğlenceli görünmüyor (yukarıda daha) ve iç içe yani düzeyli (daha karışıktır) diziler ayrıştırma. Ve belirli ayarları eklenen ve kaldırılan, tüm dosya okuma, ve sonra tüm ayarlarını yazılı olabilir, çünkü tekrar, ya da eğlenceli görünmüyor.

Aşağıdaki biçimleri kullanarak avantajları ve dezavantajları nelerdir? (Ve ben kaçırmış diğerleri):

  • Özel XML
  • INI (parse_ini_file kullanmak mümkün)

(Bir veritabanı kullanma is not nedeniyle proje için ihtiyaçlarına uygun. Anlıyorum birçok durumda bir veritabanı değil sadece, bu durumda tercih olacaktır.)

Eğer bir veritabanını kullanmak için koyamadık ve bir web arayüzü kullanılarak düzenlenebilir olabilir ayarları saklamak için olsaydı, ne yapardınız?

(Not: Bu, farklı bir soru ayarları değiştirilemez burada this one, PHP dosyası, tüm yolu Ve evet, kurulum şu anda doğru ayarlarla bir PHP dosyası yazmak gelmez.).

7 Cevap

Tamam, ben arıyordum cevap her türlü alamadım. İşte ben bekliyordum şey tür bulunuyor.

INI

  • INI dosyasında saklanması ayarları kullanıcı elle düzenlemek istediğiniz basit ayarlar için uygun olabilir.
  • Ancak, karmaşık diziler oluşturmak kolay değildir, ve başlık dizinin hangi düzeyde olduğunu anlamak için bazı zihinsel akrobasi gerektirir.
  • Her yerde dosyasında kullanılmamalıdır Ayrılmış sözcükler, şunlardır: evet, hayır, doğru ve yanlış, bu sorunlu olabilir.
  • Sabitler dosyada kullanılabilir.
  • Hiçbir INI dosyaları yazma yöntemi inşa.

XML

  • Sonra normal yöntemlerle işlenebilir bir nesnenin içine XML açmak için "çok basit ve kolay kullanılabilir bir araç kümesi sağlar" SimpleXML uzantısı kullanabilirsiniz.
  • Çok karmaşık dizilerin kullanımı sağlar.
  • Mümkünse gerekirse, elle düzenlemek.
  • Dosyanın geçerliliğini doğrulamak için dış araçlarını kullanabilirsiniz.
  • PHP için birçok birçok XML işlemciler.

YAML

Unutmayın: bir veri tabanı. Karmaşık diziler kullanmak için güçlü olmak gerekir.

XML kullanarak kararlı değilseniz, siz düşünün isteyebilirsiniz YAML. Ben sadece Ruby ile kullandı, ama hızlı bir Google PHP desteği için birkaç seçenek vardır göstermektedir ettik. TBF, orada bağlantıları bazı arguments against PHP ile YAML kullanarak, ama YMMV içerir.

Ben ayarları üzerinde doğrudan erişimi olan birinin fikir gibi olmaz, bu nedenle kasıtlı saldırıları önlemek ve temiz çıktı sağlarken, bir tampon olarak hareket etmek bir arayüz sağlamak için önemlidir.

Bunu göz önüne sunucu tarafı biçimi tercihi sürece diğer tüm sorunlar etrafında çalışmış olabilir düzgün onunla arayüzü gibi, hiç önemli değil.

Ben özel bir XML dosyası, config ölçeklendirilebileceği bu şekilde tavsiye ederim ve bunu erişmek için PHP XML kütüphaneleri kullanabilirsiniz.

Hızlı bir örnek:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>

PHP düzenleme işlevleri inşa ve program ayarlarını saklamak için düz metin biçimi kullanın INI dosyaları, ayrıştırma etti.

Ben bir iki adım yaklaşım kullandık. Değişkenler ve isimleri kullanıcı onları değiştirmek için yeteneği veren bir arayüz ile veritabanında saklanır. Onları değiştirdiğinizde, bir dosya sunucusu üzerine kaydedilir ve daha sonra uygulama (değişiklikler ihtisasını geri DB kaydedilir) üzerinden düşünce başvurulan alır. Basit, kolay yapar ve yedekleme güncelleme yapar - yedekleme gerek yok dosyalar, sadece yedek veritabanı. Çıkan dosyalar sadece vardır formatında = 'VariableValue' $ degiskenAd inc dosyaları.;

Ve neden değil düz php?

yapılandırın-form.php

Form method=POST action='configure.php',

giriş eski alanlar. name='upload' value='<?php echo UPLOAD; ?>'

Bir configure.php dosyası:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

ve orada o var. Sizin için yapılandırma dosyası oluşturur basit php.