2016-06-23 3 views
0

Учитывая класс:Доступ к статической переменной из класса, хранящегося в переменной

class SomeClass{ 
    static $information = 'useful information'; 
} 

Я трудный доступ к статической переменной в наборе классов PHP. Каждый класс имеет статическую переменную $ information. Если я получить доступ к статической переменной непосредственно

echo SomeClass::$information; 

Программа выводит информацию, однако при попытке доступа к нему хранить его в переменной я получаю ошибку, что «::» является неожиданным.

$class = SomeClass; 
echo $class::$information; 

Причина для хранения класса в переменной так, что я могу иметь функцию, которая может создать массив пользователей или массив проектов, например.

+0

Почему бы вам нужно хранить класс в переменной? Что бы это принесло вам. –

+0

https://eval.in/594385 – splash58

+0

Запись статической функции 'static function getInformation() {return $ self :: $ information;}', потому что '::' является неожиданным. и 'static function getInformation {return $ self -> $ information;}' потому что $ self не является объектом. – user1320619

ответ

1
class SomeClass { 
    public static $information = 'useful information'; 

    public static function getInformation() { 
    return self::$information; 
    } 
} 

Затем вы можете сделать следующее:

# Static Access 
echo SomeClass::$information; 
echo SomeClass::getInformation(); 

# Static Access via Class Name in Variable 
$someClass = 'SomeClass'; 
echo $someClass::$information; 

## Instantiated access 
$someClass = new SomeClass(); 
echo $someClass->$information; 
echo $someClass->getInformation(); 
0

Вы не можете сохранить ссылку на класс в переменной, это бесполезно.

Вместо этого вы можете хранить имя класса в переменной и вызвать статический метод или переменную:

$class = 'SomeClass'; 
echo $class::$information; 
0

Вы можете сделать это:

$class = SomeClass::class; 
echo $class::$information; 

::class получает полное имя класса как строка.

+0

Для чего нужна версия PHP? – user1320619

+0

@ user1320619 PHP 5.5, http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class – Benten

Смежные вопросы