Можете объяснить, как работает этот PHP код?
if( true ){
qwe::$e = 3;
}
class qwe {
static public $e = 2;
static function asd(){
echo qwe::$e;
}
}
print_r(qwe::$e);
qwe::asd();
Результат: 33.
Разве можно обращаться к класу перед объявлением? И почему не переопределилась переменная в классе?
Статичному свойству $e присваивается значение 3, потом два раза это значение выводится на экран.
Так как класс является статическим и/или в нём присутствуют статические переменные - то можно.
Если у Вас обычный класс без каких-либо статических данных, к которым можно получить доступ через :: - то тогда нужно создавать новый экземпляр класса и через магические методы уже "стучать".
Вот небольшой пример:
class A {
protected $foo = 'bar';
public function __get($name){
return $this->{$name};
}
}
class B {
static $foo = 'bar';
}
var_dump((new A())->__get('foo') == B::$foo); // Даст True
Только для доступа в новом экземпляре надо будет переопределить магический метод и сделать проверку на то, существует ли переменная.
Продвижение своими сайтами как стратегия роста и независимости