[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите придумать, как вызывать функцию
GET
Здравствуйте, не могу сообразить, как сделать

в скрипте строки:


$i=1;
$_SESSION['mm']=fun_1($_POST['m']);

$i меняется т.е. функция может быть fun_12, fun_5 и т.д.

как выше написать условие что то типа

fun_n='fun_'.$i; 


C переменными так можно, а с функциями как быть? Функции лежат в отдельном каталоге и подключаются инклюдом.



Спустя 38 минут, 23 секунды (25.11.2011 - 06:45) bulgakov написал(а):
Свернутый текст
Наверное с утра не выспался, но я упорно не могу понять в чем задача...

Спустя 4 минуты, 34 секунды (25.11.2011 - 06:50) McLotos написал(а):
А что CASE не рулит?

Спустя 1 минута, 42 секунды (25.11.2011 - 06:52) Rand написал(а):
$_SESSION['mm'] = call_user_func('fun_'.$i, $_POST['m']);

Спустя 6 минут, 53 секунды (25.11.2011 - 06:59) alex12060 написал(а):
как вариант еще можно посмотреть в сторону eval()

Спустя 5 минут, 46 секунд (25.11.2011 - 07:04) GET написал(а):
Цитата
call_user_func


наверное не подойдет ...гм...
eval
наверное тоже можно применить, но с ним будет еще сложнее наверное...
CASE будет большим и ему конкретные имена указвать придется, а у меня они меняються динамически


в целом вопрос снят, решил присвоить функциям одинаковое название, но разные имена файлов...минус в том, что таким способом можно только одну функцию с таким названием вызвать

			if (file_exists ('xxx/xx/'.$func.'.php'))
{
include 'xxx/xx/'.$func.'.php';
}

Всем спасибо за помощь.

Спустя 1 час, 10 минут, 36 секунд (25.11.2011 - 08:15) McLotos написал(а):
=)
берешь case, а дальше через rand задаёшь число, которое и будет вытягивать функцию из кейса. Всё намного проще чем кажется. =)

Спустя 3 минуты, 34 секунды (25.11.2011 - 08:19) GET написал(а):
McLotos

придумал подругому делать инклюд внутри, а не снаружи
function myfunction
{
include'1.php';
}

тогда с myfunction можно все, что угодно делать smile.gif

Спустя 1 минута, 46 секунд (25.11.2011 - 08:20) McLotos написал(а):
тоже вариант, но почему-то мне это кажется извращением, не знаю почему.

Спустя 4 минуты, 8 секунд (25.11.2011 - 08:24) GET написал(а):
McLotos

не все же быть нормальным smile.gif

Спустя 56 минут, 21 секунда (25.11.2011 - 09:21) Nikitian написал(а):

<?php
$i=1;
$func = 'fun_'.$i;
$_SESSION['mm']=$func($_POST['m']);

Спустя 2 минуты, 57 секунд (25.11.2011 - 09:24) GET написал(а):
Nikitian

Да ну!...проверить не могу, но...если что + за мной!

Спустя 4 минуты, 19 секунд (25.11.2011 - 09:28) Winston написал(а):
alex12060
Цитата (alex12060 @ 25.11.2011 - 05:59)
как вариант еще можно посмотреть в сторону eval()

С появлением в PHP анонимных ф-й, eval здесь не нужен.



Спустя 10 минут, 35 секунд Winston написал(а):
$i=1;
$func = 'fun_'.$i;
$func = function ($var)
{
return $var;
};
echo $func(10);

Спустя 21 минута, 18 секунд (25.11.2011 - 09:49) Nikitian написал(а):
Цитата (A.B.C. @ 25.11.2011 - 09:24)
Nikitian

Да ну!...проверить не могу, но...если что + за мной!

Специально проверил, такой код выводит 1

<?php
function
i1($v){
return$v;
}
$i=1;
$name='i'.$i;
echo$name($i);

Спустя 34 минуты, 31 секунда (25.11.2011 - 10:24) linker написал(а):
Более читабельным будет call_user_func(), без всякой магии. Хотя в данном случае, 100% требуется пересмотр и переписывание архитектуры.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.