PHP sınıfı sabiti geçerli dizini ayarlamak

2 Cevap php

Ben ortamında belirli sabitler bir sınıf içeren benim proje kök dizininde bir yapılandırma dosyası var. Ben yaşıyorum sorun KÖK var olarak geçerli dizini ayarlamak için nasıl. Etkisiyle şey:

Class Config {
  const ROOT = dirname(__FILE__);
}

Sabit bir ifade olduğu için bu mümkün değildir. Ben de böyle bir örneği başına anlaşma üzerinde değiştirmeyi denedim:

Class Config {
  const ROOT = '/old/path';
  public function __construct(){ $this->ROOT = '/new/path'; echo $this->ROOT; }
}
$config = new Config;

Bu iş gibi görünüyor, ama bu benim tüm sınıflar arasındaki $ config etrafında geçen gerektirir. Herkes bu etrafında kesmek buldu?

(Ayrıca, ben henüz PHP5.3 değilim, bu yüzden __DIR__ çalışmaz).

2 Cevap

Ilk çağrı üzerine başlatılan bir statik işlev olun:

class Conf {

 static protected $_root= null;

 static public function root() {
  if (is_null(self::$_root)) self::$_root= dirname(__FILE__);
  return self::$_root;
 }

}

Bu sınıf kök ayarlamanızı sağlar ve yazma root değerini korur.

Bunun yerine böyle bir sabitin static özelliğini kullanabilirsiniz:

Class Config {
    public static $ROOT = ''; // Can't call dirname yet
}
Config::$ROOT = dirname( __FILE__ ); // Now we can set it

Ve sonra bu gibi (config dosyası dahil olduğu varsayılarak) her yere çağırabilirsiniz:

Config::$ROOT