Как передать аргументы в неизвестную функцию? Здравствуйте!
Имеется класс, который загружает другой класс в свойство $obj. Далее методом __call из загруженного класса возможен вызов функций. Пока имеется такой код:public function __call($function, $args){
$arg_str = '';
$count = count($args);
if($count > 0) for($i = 0; $i obj->'.$function.'('.$arg_str.');');
}
возможно ли более правильное решение? Спасибо.

21 Авг 2019 в 07:08
176 +1
0
Ответы
1

Да, более правильным и безопасным решением было бы использование функции call_user_func_array для передачи аргументов в неизвестную функцию. Вот пример кода:

public function __call(function,function, function,args){
if(method_exists($this->obj, $function)){
return call_user_func_array(array($this->obj, $function), $args);
} else {
// обработка ошибки в случае отсутствия метода
throw new Exception('Метод ' . $function . ' не найден в загруженном классе');
}
}

Таким образом, мы проверяем существование вызываемого метода в загруженном классе и при его наличии вызываем этот метод, передавая ему аргументы через call_user_func_array. В случае отсутствия метода будет выброшено исключение.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир