PHP ile yapılandırma için PHP dosyalarını düzenleme

6 Cevap php

Her şeyden önce, ben bu gibi SMF gibi, bu yöntemi kullanarak çeşitli popüler yazılım nedeniyle kötü bir uygulama değil varsayarak yaşıyorum.

Her neyse, ben şu anda bu kodu vardır:

<?php
// main visual config
$cfg['lang']    = 'en';

// paths
$path['admin']  = 'index.php?p=admin';
$path['admin2'] = 'zvfpcms/admin';
$path['root']   = 'zvfpcms';
$path['images'] = 'zvfpcms/img';
$path['css']    = 'zvfpcms/css';
$path['js']     = 'zvfpcms/js';
$path['pages']  = 'zvfpcms/pg';
?>

Şey $ cfg değişken (ler) bir arayüz aracılığıyla doğrudan düzenlenebilir istiyorum olduğunu.

Bu nasıl sağlanabilir ki? Ben değiştirme dizeleri ben yaratmak gelecek $ cfg değişkenler için olanaklar (hatta sonsuz) çok sayıda vardır, özellikle iyi bir fikir olacağını düşünüyorum olamaz.

Ya da ben farklı bir yöntem yetinmek zorunda kalacak ...

Yanıtlar takdir!

6 Cevap

Şey, ben sadece Unkwntech cevabı here ... Ben başvuru için burada tutacağız bulundu.

Pear Config okumak izin verir ve kolayca yapılandırma yazmak / farklı kaynaklardan, bir PHP dosyası / diziye dahil. Muhtemelen olsa kendi dosyasına $cfg hareket etmek gerekir ve diğer değişkenler vb etkilenmez böylece bunu içerir.

Ayrıca yine muhtemelen kendi dosyasına değişkeni taşımak gerekir, var_export() kullanarak ve daha sonra dosya üzerinde yazma kendiniz yapabilirdi. Ben bu Armut sınıfın daha dağınık / az okunabilir PHP yazmak olacağını düşünüyorum.

Sadece veritabanındaki tüm ayarları ve ayar değişiklikleri, yapılandırma dosyasını yeniden ne zaman.

PHP düzenlemek PHP kodu yok. Yerine bir XML yapılandırma dosyası kullanın. Eğer bir değişiklik yapmak istiyorsanız, XML dosyası oluşturulur veri yapısında değeri değiştirmek ve yeni bir yapılandırma dosyasına geri dışarı tükürmek, XML bilgileri okuyunuz.

Bir veritabanında ayarlarını saklamak, ya da standart bir ini dosyası (anahtar = değer çiftleri) kullanabilirsiniz ya;

lang=en
timezone=CET

Bunları okuyun:

function loadSettings() {
    $cfg = array();
    foreach (file('settings.ini') as $line) {
        list ($key, $value) = explode('=', $line);
        $cfg[$key] = $value;
    }
    return $cfg;
}

Dosya I / O zaten bir veritabanına açık bir bağlantınız varsa, özellikle standart veritabanı Thou aramaları daha az efficiant vardır.

Eğer, düzenlemeden önce çalışan bir sistem var (belki de tek tırnak karakteri kaçmadı) edit bazı hata ve düzenleme sonrasında tüm uygulama kullanılamaz hale gelir, çünkü ben bu kötü uygulama IS inanıyorum nedeni çünkü PHP yapmak hemen hemen her şeyi etkiler config dosyasını ayrıştırmak olamaz.

XML öneri size XML okumak yaparken oluşabilecek hatalar işleyebilir gibi kötü biri değil.

(Eğer ince birini kullanarak değil gibi görünüyor bu yazı okuma) bir veritabanı olsaydı, bu veriler için iyi bir yer olurdu - ki bunun için budur. Düz bir dosya dünyada, olmayan bir PHP dosyası okuma ve yorumlama oto-düzenleme PHP dosyaları kendiniz daha iyidir.