array_push — озадачен примером теста Zend

Во время подготовки к тесту Zend я наткнулся на этот код, который работает, но я не могу понять, почему с учетом двух странных реквизитов в array_push. strtolower и ucfirst используются там, где должны быть переменные. Я пропустил некоторые документы?

<?php
$str = 'MY STRING';

$funcs = array();

array_push($funcs, 'strtolower', 'ucfirst');

foreach ($funcs as $func) {
$str = $func($str);
}

if ($str == 'My string') {
echo "Correct";
}
else {
echo "Incorrect";
}
?>

1

Решение

PHP поддерживает концепцию переменных функций. Это означает, что если
к имени переменной добавлены круглые скобки, PHP будет искать
функция с тем же именем, что и для переменной, и
попытается выполнить это. Среди прочего, это может быть использовано для
реализовать обратные вызовы, таблицы функций и так далее.

Источник: http://php.net/manual/en/functions.variable-functions.php

2

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

Самое интересное происходит здесь:

$str = $func($str);

Это переменная функция — функции, перечисленные в массиве (через array_push), вызываются на строковом вводе.

1

По вопросам рекламы [email protected]