Прошу помощи, ибо в полном ступоре сейчас...
Такая ситуация. Есть некоторое количество функций. Пусть названия будут func1, func2 и т.д. Есть формы на различных страницах, кнопки submit которых имеют имена, аналогичные именам функций, т.е. func1, func2 и т.д. Есть массив с именами этих функций.
Можно ли как-то с помощью проверки массива $_REQUEST запустить функцию с соответствующим именем? Т.е. если существует $_REQUEST['func1'], то запустить функцию func1(). Сейчас это все через if проверяется, но портянка слишком длинная уже. Да и нет гибкости.
Быть может, несколько сумбурно написал, но просто задолбало уже при мельчайшем изменении лезть в код в куче мест. Цель - при добавлении новой функции просто прописать ее имя в массив и не геморроится потом с поиском остальных мест, куда что-то прописывать надо...
Возможно ли это в принципе? Заранее большое спасибо за помощь.
1. Schupp - 23 Сентября, 2011 - 01:27:23 - перейти к сообщению
2. caballero - 23 Сентября, 2011 - 01:57:10 - перейти к сообщению
$_REQUEST['func1']()
3. Schupp - 23 Сентября, 2011 - 02:11:49 - перейти к сообщению
caballero пишет:
$_REQUEST['func1']()
Не понял Абсолютно... Может невнятно объяснил я?
Вместо:
if ($_REQUEST['func1']) func1();
if ($_REQUEST['func2']) func2();
.....
if ($_REQUEST['func9']) func9();
Хочется получить что-то более универсальное и короткое. Если возможно, конечно. А значения $_REQUEST['func1'] могут быть любыми, это ведь имена кнопок.
4. caballero - 23 Сентября, 2011 - 02:58:55 - перейти к сообщению
Я предположил что имена кнопок будут совпадать с именами функций - куда уж универсальнее
5. Schupp - 23 Сентября, 2011 - 03:13:38 - перейти к сообщению
caballero пишет:
имена кнопок будут совпадать с именами функций
Так ведь имена, а не значения... Значения могут быть в районе "Отправить", "Добавить", "Сохранить"...
Неее, не доходит до меня. Торможу, наверно Неужели в такой форме можно имя функции записать в php и она запустится? Т.е. к примеру $_GET['abc']() равнозначно abc()? Или если значение $_GET['abc'] равно def, то вышеуказанная запись равносильна def()? Где правда?
6. Ch_chov - 23 Сентября, 2011 - 05:14:27 - перейти к сообщению
Цитата:
А что мешает вам это проверить?Неужели в такой форме можно имя функции записать в php и она запустится?
Если вашим скриптом будут пользоваться посторонние пользователи, то просто так вставлять $_GET['abc']() в свой код конечно не стоит. Это не безопасно.
7. DeepVarvar - 23 Сентября, 2011 - 07:17:00 - перейти к сообщению
8. EuGen - 23 Сентября, 2011 - 09:44:34 - перейти к сообщению
PHP>=5.3