Может ли анонимная функция быть определена вне другого метода в классе так же, как свойство класса?

я использую 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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …