я использую PHP 7.1.11 на моей машине.
Рассмотрим ниже рабочий код:
<?php
class Foo {
public $bar;
public function __construct() {
$this->bar = function() {
return 42;
};
}
}
$obj = new Foo();
// as of PHP 7.0.0:
echo ($obj->bar)(), PHP_EOL;
?>
Вы можете видеть, что анонимная функция была назначена свойству класса bar
но это было сделано в конструкторе.
Могу ли я определить ту же анонимную функцию вне конструктора или любого другого метода, то есть в самом типе объявления свойства, и могу вызывать ее из любого метода класса, используя $this
?
Я попробовал код ниже, но я получил Fatal Error в выводе:
<?php
class Foo {
public $bar = function() {
return 42;
};
public function __construct() {
$this->bar();
}
}
$obj = new Foo();
//as of PHP 7.0.0:
echo $obj->bar, PHP_EOL;
?>
Выход :
Неустранимая ошибка: выражение константы содержит недопустимые операции
Я хочу такой же вывод, как рабочий код 42
Задача ещё не решена.
Других решений пока нет …