Выполнения функций внутри переменных в 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
php
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));

Phpfiddle - например

 6
Author: rray, 2020-01-24 10:32:24