PHP yapılandırma değişkenleri depolamak için en iyi yolu nedir?

4 Cevap php

PHP yapılandırma bilgilerinin bir demet saklamak gerekir.

Ben şu kabul ....

// Doesn't seem right.
$mysqlPass = 'password'; 

// Seems slightly better.
$config = array(
     'mysql_pass' => 'password'
);

// Seems dangerous having this data accessible by anything. but it can't be
// changed via this method.
define('MYSQL_PASSWORD', 'password'); 

// Don't know if this is such a good idea.
class Config
{
    const static MYSQL_PASSWORD = 'password';
}     

Bu şimdiye kadar düşündüm hepsi bu. I require /config.inc.php ile benim uygulama içine bu yapılandırma bilgilerini almak niyetinde.

Ne yapılandırma verileri depolamak ile ilgili sizin için çalışır, ve bu ilişkin en iyi uygulamalar nelerdir?

4 Cevap

Ben her zaman seçeneği # 2 ile gitti ve sadece hiç kimse ama sahibi buna erişimi herhangi bir tür olduğundan emin oldum. Bu Joomla, vBulletin, Galeri, ve sayısız diğerleri gibi PHP uygulamaları arasında en popüler yöntem.

Birinci yöntem (okunabilirlik) benim için çok dağınık ve üçüncü yapmak için yol çok tehlikeli. Ben Sınıf yöntemi hakkında hiç düşünmedim, bu yüzden başkası biri kendi girdi sağlayabilir. Ama bu kadar uzun Sağ erişim sınıfı 'kullanımına kullanılan ince sanırım.


Örnek ..

define('EXAMPLE1', "test1"); // scenario 1
$example2 = "test2"; // scenario 2

function DealWithUserInput($input)
{
   return eval($input);
}

Şimdi bu kod örneği gerçekten aptal, ama sadece bir örnektir. Kullanıcı girişi kullanmayı deneyebilirsiniz hangi senaryo bağlı işlevi tarafından döndürülen ne olabilir düşünün.

Eğer işlevi içinde bir küresel yaptıysanız Senaryo 2, sadece bir sorun neden olur. Aksi takdirde kapsam ve ulaşılmaz dışında bulunuyor.

Ben de userbase biraz bağlıdır söyleyebilirim. Yapılandırmaları derece kullanıcı olmak varsa dost ya da kullanıcı vs web üzerinden yapılandırma değiştirme yeteneğine sahip olması

Ben bu ve diğer ayarları SQL veritabanında saklanır için Zend Config Ini kullanın.

Genellikle istek başında bir bağlantıyı açmak veritabanı bağlantılarını işlerken ben genelde ikinci yöntemi kullanın ..., sonra sonunda onu kapatın. Ben bağlantı, daha sonra (unset () fonksiyonu ile) küresel diziden kullanıcı adı / şifre kaldırır kuran bir işlevi var, bu "hassas" mysql bağlantı veri erişimini sistemin diğer parçaları önler.

Ben en çok yapılandırma değerleri için 2 seçeneği ile de değilim. Eğer were Class uygulamak için gidiyoruz, sonra ben bunun yerine genel bir yapılandırma Sınıf etkilediğini Sınıf belirli değerleri kravat olacaktır.

Sizin örnekte bu verileri doğru şekilde saklanması ve aynı zamanda bugüne kadar gerekli ise çoklu bağlantı oluşturmak için kolay bir yol sağlayacak, sizin Sınıf veritabanı bağlantıları için olacak ve bir örnek, vb şifre, db_name tasarruf sağlayacaktır.