Kalıcı php ile bir php dosyasına değişkenleri yazmak

6 Cevap php

Ben kalıcı php kullanarak bir php dosyasındaki değişkenleri değiştirmek gerekiyor.

I am creating a multilanguage site using codeigniter and using the language helper which stores the text in php files in variables in this format: $lang['title'] = "Stuff";

I fopen () vb kullanarak dosyaları düz metin erişmek mümkün oldum ve bunu muhtemelen ben normal ifadeler ile birlikte düzenlemek ve değişiklikleri yaptıktan sonra dosyayı yeniden yazmak istiyorum ama bu alanları bulmak olabilir gibi görünüyor Biraz hacky görünüyor.

Php kullanarak kalıcı olarak bu değişkenleri düzenlemek için kolay bir yolu var mı?

Şerefe

6 Cevap

. Başka bir yere veri depolamak (örneğin, bir veritabanı) ve üst bu açıklama ile, * php dosyaları oluşturmak için basit bir komut dosyası yazmak için bir yol daha kolay görünüyor:

#
# THIS FILE IS AUTOGENERATED - DO NOT EDIT
#

Ben bir kez benzer bir sorunla karşı karşıya. Ben sadece smarty şablon ekleyerek düzelttim. Ben aşağıdaki gibi yaptım yoluydu:

  1. Dosyadan dizi oku
  2. Diziye ekleme
  3. Smarty için dizi geçirmek
  4. Smarty dizinin üzerinde döngü ve bir (reg-ex eksik olabilir toplam kontrolü bu şekilde,) şablonu kullanarak dosya oluşturmak
  5. Dosyayı değiştirin

Bu yardımcı olur bana bildirin.

Farzedelim ki

  • Okunabilir bir insan ve insan-düzenlenebilir formda sözlük dosyasını (yok Serileştirme vb) gerek

  • Sözlük dizisi bir tek-boyutlu, ilişkisel dizidir:

I would

  1. Bir işlev içinde () sözlük dosyasını içerir

  2. $lang dizide gerekli tüm işlemleri (, kelimeler eklemek kelimeleri çıkarın, kelimeleri değiştirmek) mı

  3. Basit bir döngü kullanarak geri dosyasına $lang dizi yazın:

    foreach ($lang as $key => $value)
     fwrite ($file, "\$lang['$key'] = '$value';\n";
    

Bu tabi ki, son derece sınırlı bir yaklaşımdır. Etrafta "gerçek bir PHP kaynak kodu ayrıştırıcı, değiştirici ve yazar" olup olmadığını görmek için gerçekten ilgi olacaktır. Bu tokenizer fonksiyonlarını kullanarak yapmak mümkün olmalıdır.

O da gerçekten çok dilli site hakkında ise, PHP gettext uzantısı içine bakarak zevk olabilir. Bu uzun yıllar boyunca malzeme yerelleştirilmesi için kullanılmakta olan bir kütüphaneye geri düşüyor ve çeviri dosyaları yetişmek için araçları hemen hemen oldukça uzun süredir nerede. Bu da, daha eğlenceli ürünün daha sonraki revizyonlar tüm dilleri destekleyen yapar.

Eğer bir dosya var ki, diğer yandan ben, bir dizi değil, uygun tanımlarını kullanmak olmaz

switch ($lang) {
case 'de':
  define('HELLO','Hallo.'); 
  define('BYE','Auf wiedersehen.'); 
break;
case 'fr':
   define('HELLO','Bonjour'); 
   define('BYE','Au revoir.'); 
   break;
case 'en':
default:
   define ('HELLO','Hello.'); 
   define ('BYE','Bye.'); 
}

Ve ben de bakım bir güçlük olursa, bir veritabanından o otomatik oluşturmak istiyorum.

Pear Config onun 'PHPArray' kabını kullanarak ayarları içeren PHP dosyalarını okuma ve yazma izin verir. I oluşturulan PHP var_export() o daha okunabilir olduğunu bulduk