Intereting Posts
Как отображать цену продукта с и без налога одновременно в списке продуктов для Prestashop? Процесс виртуализации PHP – получение родительского вывода в родительском Определить версию браузера Как отображать последние комментарии от Facebook Комментарии социальный плагин? проблемы в создании расширенного поиска с использованием запроса Как выполнить WP_Query с несколькими аргументами? Невозможно заставить PHP-функцию работать внутри HTML внутри PHP Magento: максимальное количество максимального продукта до 1 за заказ. количество 2 = 2 заказа Удалить index.php в URL-адресе Codeigniter Передать переменную из PHP в HTML Установка PHPMailer без Composer Как создать новую страницу в панели администратора prestashop? как реализовать простой Android OAuth и API сервера Допустимый размер памяти 33554432 байт исчерпан (пытался выделить 12 байт) php imap – получить тело и сделать простой текст

Функциональный литерал в классе PHP

Взгляните на этот код, пожалуйста:

$array = array( 'action' => function () { echo "this works"; } ); class Test { public $array = array( "action" => function () { echo "this doesn't"; } ); } 

Первый литерал функции отлично разбирается, а второй – внутри класса – вызывает синтаксическую ошибку:

Ошибка анализа: синтаксическая ошибка, неожиданная функция «(T_FUNCTION) …

Может ли кто-нибудь объяснить это мне? Это ошибка?

EDIT: это последний PHP: 5.6.6

Solutions Collecting From Web of "Функциональный литерал в классе PHP"

Из класса это свойство!

Правило от свойств:

Объявление может включать инициализацию, но эта инициализация должна быть постоянной величиной, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.

http://php.net/manual/en/language.oop5.properties.php

У меня нет возможности проверить свой код на PHP 5.6.6, но я думаю, что этот код разрешает вашу проблему.

 class Test{ public $array; function __construct(){ $this -> array = array( 'action' => function (){ echo 'It works too'; } ); } } $test = new Test(); $test -> array['action'](); 

Попробуйте это, дайте мне знать, если это сработает для вас

 <?php $array = array('action' => function () { echo "this works"; }); class Test { public $arr; function __construct() { $this->arr = array("action" => function () { echo "this works too"; }); } function getArr(){ var_dump($this->arr); } } var_dump($array); $obj = new Test(); $obj->getArr();