16
Авг

PHP, получение контекста в $this одного объекта в методе другого, через статический вызов

Posted by Jeka under Программирование

Сегодня случайно наткнулся на интересно поведение PHP о котором не знал.
Проверял для версий 5.2 и 5.3.
Хотя интерпретатор и ругается на нарушение стандарта, но работает.

Пример:

<?php
class Main{
   public $property = "hello\n";
   public function test()
   {
   		@Test::nonStaticMethod(); // вызов не статического метода как статический
   }
}

class Test{

 	public function nonStaticMethod()
 	{
 		echo $this->property;
 	}

}

$m = new Main();
$m->test(); // выведет hello

Данный код выведет строку «hello\n» из свойства $property класса Main.

Для каких нибудь хаков возможно пригодится.

Оставьте комментарий