Выполнения функций внутри переменных в PHP
В некотором проекте я с ошибкой при попытке создать переменную как функцию, например:
namespace Classes;
class Teste
{
public static function abc() { return 'teste'; }
}
При вызове функции, как правило, работает:
\Classes\Teste::abc();
Но когда я пытаюсь:
$class = "\Classes\Teste::abc";
$class();
Он возвращает ошибку:
Fatal error: Call to undefined function \Classes\Teste::abc()
3
Author: tadeubarbosa, 2015-02-03
1 answers
Сообщение об ошибке во второй строке, потому что вы пытаетесь вызвать string(возвращение abc()
) как функции.
Если просто вызвать метод можно использовать функцию call_user_func, где первый аргумент функции/метода, а второй свои аргументы. Для вызова методов с аргументами используйте call_user_func_array
<?php
class Teste
{
public static function abc() {
return 'teste';
}
public static function soma($a, $b){
return $a+$b;
}
}
$class = "Teste::abc";
echo call_user_func($class) .'<br>';
$str_metodo = "Teste::soma";
echo call_user_func_array($str_metodo, array(30,1));
6
Author: rray, 2020-01-24 10:32:24