PHP: закрытие для установки переменной - PullRequest
0 голосов
/ 03 марта 2019

В PHP замыкания весьма полезны.Но могу ли я использовать замыкания для установки элементов массива?

$configs = [
    "y" => "1",
    "x" => function() { return "xxx"; },
];
echo $configs["y"];
echo $configs["x"];  // error

дает

Recoverable fatal error: Object of class Closure could not
be converted to string on line 6 (last line)

Есть ли шанс наложить замыкание или что-то подобное, что замыкание работает для инициализации массива?

Работа с PHP 7.1.4 на MacOSX

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Требуется IIFE (выражение для немедленного вызова функции):

$configs = [
  'y' => '1',
  'x' => (function () { return 'xxx'; })()
];

echo $configs['x'];

Демонстрация: https://3v4l.org/O0fEm

0 голосов
/ 03 марта 2019

Я бы определил функцию отдельно:

function test(){   
    echo "Hello";
}

И затем присвоил бы результат переменной:

$a = test();
echo $a; //Returns "Hello"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...