class Config {
const TEST = "This is a Constant";
static public $test = "This is a static property test."
static protected $test2;
public static function initialize() {
self::$test2 = 'initialized';
return self::$test2;
}
public static function getTest2()
{
return self::$test2;
}
}
echo Config::TEST; // outputs This is a Constant
echo Config::$test; // outputs This is a static property test.
echo Config::initialize(); // outputs initialized;
echo Config::getTest2(); // outputs initialized;
Если вам нужно динамически установить значение, то вы не хотите использовать константу, которую хотите использовать статическое свойство. Если вы хотите, чтобы класс Config
мог манипулировать значением этого свойства напрямую, тогда используйте ключевое слово private
или protected
. Если это не проблема, вы можете использовать свойство public
.
Другой и, пожалуй, самый надежный подход в зависимости от того, что вы пытаетесь реализовать, - это использование констант для доступа к статическим или специфическим свойствам экземпляра класса:
class Config
{
const TEST = 0;
const TEST2 = 1;
protected static $conf = array();
public static function initialize($testVal, $test2Val)
{
$conf[self::TEST] = $testVal;
$conf[self::TEST2] = $test2Val;
}
public static function get($key)
{
if(isset(self::$conf[$key])
{
return self::$conf[$key];
}
}
}
Config::initialize('Test', 'Test 2');
echo Config::get(Config::TEST);
echo Config::get(Config::TEST2);