За последние 24 часа нас посетили 26868 программистов и 1819 роботов. Сейчас ищут 950 программистов ...

Создание функиций

Тема в разделе "Прочие вопросы по PHP", создана пользователем jei, 12 окт 2012.

  1. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    В общем вкратце понадобилось создание определённого количества функций исходя из
    определённого числа. Допустим число 5 надо создать 5 функций.возможно ли такое на автомате?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Eval() и фигачь туда любой сгенерённый код
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Код (PHP):
    1. for ($i = 0; $i < 5; $i++) {
    2.     $fname = 'fn'.$i;
    3.     $$fname = function($var) { 
    4.          echo $var;
    5.      };
    6. }
    7. $fn4('preved'); 
    5 одинаковых функций!
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    vs, Это только в >= 5.3

    <матное слово>:

    Код (PHP):
    1. $array_functs=array(1=>'$param1,$param2',2=>'$param1');
    2. $funct=array();
    3. $return='';
    4. foreach($array_functs as $key => $value) {
    5.     if($key==1) {
    6.         $return='($param1===1)?$param2:$param1.$param2';
    7.     } else if($key==2) {
    8.         $return='$param1';
    9.     }
    10.     $funct[$key]=create_function($value,'return'.$return.';');
    11. }
    12.  
    13. echo $funct[1](1,'param1'); //param1
    14.  
    15. echo $funct[2](1); //1  
    Тут можно намудрить так, что потом сам даже не поймешь как))))
    Даже не хочу суда лезть.

    Вообще нет годности в этом))))

    Ну да на eval тоже, только там еще <матное слово> =)
     
  5. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    нет они не одинаковые будут.
    А что с eval() то или это всё на что ты способен?Реальный пример
    igordata
     
  6. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    А можно поконкретней пример? Для чего нужны эти 5 функций?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а сам? или клянчить готовое - это всё, на что ты способен?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Your уже 5.4 на дворе. Забудь про 5.2 =)
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Да мне то все равно) Я в общем смысле говорю, у меня то новые версии)

    jei, ты же профессионал... :D

    Код (PHP):
    1. $array_functs=array(
    2. 'f1'=>array(
    3.     'param'=>'$param1,$param2',
    4.     'return'=>'if($param1===1) {return $param2;}else{return $param1.$param2;}'),
    5. 'f2'=>array(
    6.     'param'=>'$param1',
    7.     'return'=>'return $param1;'));
    8. $functions='';
    9. foreach($array_functs as $key => $value) {
    10.     $functions.='function '.$key.'('.$value['param'].'){'.$value['return'].'}';
    11. }
    12. eval(''.$functions.';');
    13. echo f1(1,'return'); //return 

    Да так - то вариантов можно придумать массу=)
     
  10. jei

    jei Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    542
    Симпатии:
    0
    я да а ты нет)