Ох и любопытные мы, нас так и тянет узнать, что же данная запись выведет на экран?
<?
$this->{$this->a}(); // Fatal error: Using $this when not in object context in
?>
Данная запись выведет ошибку на экран, так как мы пытаемся обратиться к методу класса вне объекта и не инициировав его
Чтобы получить какой-то результат на экран, необходимо создать этот класс и показать, что выведется при правильном использовании данной записи
<?
class A{
public $a = 'foo';
public function __construct(){
$this->{$this->a}(); // Фактически это выглядит $this->foo();
}
public function foo(){
echo __CLASS__ . ' - ' . __FUNCTION__ . '<br />'; // Формируем запись вида A - foo, где А - имя класса, а foo - название функции
}
}
$class = new A; // Выведет A - foo
new A; // Выведет A - foo
// Оба вызыва отработают потому, что сработает функции при создании объекта __construct, а сам вывод находится внутри функции foo
?>
|