Использование функции call_user_func_array в PHP
В PHP есть такая функция, которая называется call_user_func_array. Данная функции может использоваться для динамического вызова методов класса, как с параметрами так и без.
Особенно, данная функция может быть полезна при динамическом вызове обработчиков маршрутов в MVC коде.
Допустим у нас есть следующий класс контроллера статей ArticlesController. Код максимально упрощен для того, чтобы показать суть использования данной функции.
<?php
// класс контроллера статей
class ArticlesController
{
// действие, которое отображает одну статью по идентификатору $id
public function actionArticle($id) {
return "Id={$id}";
}
// действие которое отображает статью из корпоративного блога
// $company_name - название компании
// $article_id - идентификатор статьи
public function actionСompanyBlog($company_name,$article_id) {
return "Company={$company_name};Article Id={$article_id}";
}
}
// вызов первой метода с одним параметром
$result[] = call_user_func_array(["ArticlesController","actionArticle"], [123]);
// вызов второго метода с двумя параметрами
$result[] = call_user_func_array(["ArticlesController","actionСompanyBlog"], ["Myrusakov Support",12345]);
print_r( $result );
Данная функция принимает два параметра - массива. Первый массив состоит из класса и метода, а второй из параметров, которые передаются методу массива.
Функция call_user_func_array сама производит вызов метода контроллера и передает ему параметры, причем в каждый аргумент метода будет передано соответствующее значение параметра.
Вот такая полезная функции call_user_func_array есть в PHP.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.