Во время обучения для теста 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";
}
?>
PHP поддерживает концепцию переменных функций. Это означает, что если к имени переменной добавлены скобки, PHP будет искать функцию с тем же именем, что и переменная, которая будет оцениваться, и попытается ее выполнить. Среди прочего, это можно использовать для реализации обратных вызовов, таблиц функций и т.д.
Источник: http://php.net/manual/en/functions.variable-functions.php
Увлекательная часть происходит здесь:
$str = $func($str);
Это переменная функция - функции, перечисленные в массиве (через array_push), вызывают на ввод строки.
array_push — Push one or more elements onto the end of array
Что неясно?