Там в следующее (пример) Класс:PHP: Динамически вызов метода по умолчанию
class klasse
{
private $var = 'doit';
function doit($param)
{
return md5($param);
}
function bla($param)
{
// HERES THE PROBLEM
return $this->{$this->var}($param);
}
}
// Create new instance
$klasse = new klasse;
// Start the "dynamical output"
echo $klasse->bla('test');
Это прекрасно работает! Но проблема в том, что я бы назвал функцию md5() «динамически динамически». Поэтому я не хочу идти в обход с помощью doit(). Если я пытаюсь
private $var = 'md5';
в начале класса я получаю следующее (абсолютно senseful) сообщение об ошибке:
Fatal error: Call to undefined method klasse::md5() in - on line 13
Так что я знаю, что эта ошибка senseful, но я не имею понятия, как к избегай это?
Как я могу справиться с этим (для прямого вызова md5())?
Спасибо!
Почему вы должны сделать это? В любом случае, как насчет чего-то типа: '$ func = 'md5'; $ func();' Помните, что 'md5() 'не является методом' klass'. – grimmdude
Becaues есть API, где я могу установить хэш-алгоритм как параметр (на самом деле это sha1, а не md5, это только для целей тестирования). Ваше предложение работает не в классе. Это моя проблема. Ваше редактирование очень важно - конечно, это не метод klasse. Как я могу это назвать? – alve89
возможно, 'if method_exist ($ this, method_name)? $ this-> method_name() else do_nth' ?? – Andrew