Есть такой вызов:
return DataHelper::createFullnameFormatter()($this);
Но интерпретатор упорно ругается на потерянную скобку (именно на этой строке где вызов):
syntax error, unexpected '('
Я все раз 100 пересмотрел - ну нет нигде потерянной скобки. Это моя реализация нескольких несложных хелперов, основанных на замыканиях:
/**
* @param string $format
* @param array ...$attributes
* @return \Closure
*/
public static function createFormatter($format, ...$attributes) {
return function($model) use($format, $attributes) {
$args = self::toArray($model, $attributes);
return vsprintf($format, $args);
};
}
/**
* @return \Closure
*/
public static function createFullnameFormatter() {
return self::createFormatter('%s %s %s', 'lastname', 'firstname', 'middlename');
}
/**
* @param Model|array|object $model
* @param array $attributes
* @return array
*/
public static function toArray($model, $attributes = []) {
if ($model instanceof Model)
$model = $model->attributes;
elseif (is_object($model))
$model = get_object_vars($model);
elseif (!is_array($model))
throw new \InvalidArgumentException(sprintf('$model must be instance of "%s", array or object!', Model::className()));
$selector = function($key) use($attributes) {
return in_array($key, $attributes);
};
return $attributes ? array_filter($model, $selector, ARRAY_FILTER_USE_KEY) : $model;
}
При этом когда я вызываю так:
return call_user_func(DataHelper::createFullnameFormatter(), $this);
работает без ошибок. Но так вызывать длиннее и менее читабельно. Мне бы хотелось разобраться почему не работает первый вариант? Это что опять проблема синтаксиса? Пхп не поддерживает такое?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, подскажите как правильно записать цикл для создания массива значений meta_value после выборкиПытаюсь так:
Нужно сделать удаление строк, выбранный через чекбоксПри исполнении файла db_delete выдно, что данные от чекбокса не получаются
Как правильно залить код сайта для того, чтобы задать вопрос на Stack Overflow? У страницы много PHP-элементов, которые импортируются через inqlude, поэтому...
Есть код который выводит список друзей, которые приходят в url в формате json