Не знаю, если я сформулированное правильный вопрос, но в основном то, что я хочу знать, если есть более простой (короче) способ сделать следующее:Вызов функций PHP динамически?
switch($type) {
case 'select': $echo = $this->__jw_select($args); break;
case 'checkbox': $echo = $this->__jw_checkbox($args); break;
case 'radio': $echo = $this->__jw_radio($args); break;
case 'input': $echo = $this->__jw_input($args); break;
case 'textarea': $echo = $this->__jw_textarea($args); break;
default: return null;
}
Есть ли способ, что я мог сделать что-то $echo = $this->__jw_{$type}($args);
? Я пробовал этот код, но, конечно, это не удалось. Есть идеи?
без обид Бутма следует также отметить, что это не является хорошим решением , – DarthVader
Если вы собираетесь это сделать, я бы хотя бы использовал белый список допустимых имен функций и проверял, что он присутствует, прежде чем называть функцию. т.е.: if (in_array ($ field, array ('input', 'radio', ...) {...} – Steven
Честно говоря, это не имеет значения - 'else' этого' if' обычно будет чем-то в строке «вызвать ошибку» ... что произойдет в любом случае, если метод не существует. Добавление уникального префикса к имени метода гарантирует, что вы не столкнетесь с чем-то, что не должно быть вызвано (если предположить, что вы сделайте это правильно), так что это тоже не проблема. – Amber