PHP için yapılandırma yöneticisi

2 Cevap php

Ben kodu PHP yapılandırma dosyası yükleme bölümü yeniden faktoring üzerinde çalışıyorum. Daha önce ben birden çok 'ini' Dosyaları kullanıyordum ama şimdi projenin tüm yapılandırma detaylarını içeren olacaktır tek bir XML dosyası için gitmek planlıyoruz. Biri ini veya DB ya da başka bir şey değil ve varsayılan bir (bu durumda XML), benim kod kısmını ele gerektiğini yapılandırma dosyasını istiyorsa sorundur.

Biri ini gibi diğer yapılandırma seçeneği için gitmek istiyorsa, o ini benim XML yapılandırma dosyası benzer dosyası oluşturmak zorunda olacak ve benim yapılandırma yöneticisi önbellek depolama, ayrıştırma gibi her şeyi bakım almalıdır. Bunun için ben bir mekanizma da ben gelecekte bu gerektiği zaman bu temel mağaza ve bağımlı olmak istemiyorum temel veri deposu şey (XML, DB, ini vb) olabilir benim yapılandırma verileri için uygun arabirim Diyelim gerekir diğer dosya biçimleri için genişletilebilir olması.

2 Cevap

Eğer tüm bu işlemek için bir sınıf kullanmak isteyen konum varsayarsak, 3 seçeneğiniz vardır:

  1. Denilen bir şey, bir temel sınıf gibi, ReadConfigurationBase daha sonra 3 uygulama sınıfları, ReadConfigurationXML, ReadConfigurationINI, ve ReadConfigurationDatabase ve sen olurdu var doğru bir seçim
  2. Aynı yukarıdaki gibi, ama sen config.xml geri dönmek için bilemez geçmesi halinde Beğen geçirilen şey kapalı tabanlı seçmek için bir fabrika kullanarak ReadConfigurationBase kullanılarak uygulanan ReadConfigurationXML
  3. ReadConfiguration adlı bir sınıf var ve adım 2 gibi davranır, ama oluşturur içerir ve sahibi, 3 diğer sınıflar.

3 temel olmayan sınıflar basitçe yapılandırma dosyasının bu tür okumayı bilmek ve geri genel şekilde bilgi aktarmak istiyorum. bir arayüzün çizgisinde düşünüyorum: Eğer veri alabilirsiniz biliyorum, ama nasıl umurumda değil.

Ben kolay bir hayat kurmak istiyorum beri, 3 seçeneğini öneririm. Siz değişiklik biraz bir depolama yöntemi eklemek istediğiniz her zaman yapmak zorunda, ama bu sadece ReadConfiguration sınıfı içine biraz ekleyerek olacaktır.

İşte% 100 dinamik yapabilir bir yoldur, ama bu konularda karmaşık olur, ve ben gerçekten bunun için gerek olduğunu sanmıyorum.

Zend_Config bakabilirsiniz. Bu Diziler, Xml ve Inis için adaptörleri sağlar. Zend Framework tüm bileşenleri gibi, kalan iskelet izole kullanılabilir. Bunu kullanmak istemiyorsanız bile, iyi tasarlanmış ve bunu kendi yapılandırma yöneticisi için bir kaç fikir alabilirsiniz.