PHP строка в имени функции - PullRequest
       2

PHP строка в имени функции

0 голосов
/ 27 октября 2011

Как поместить строку PHP в имя функции?

for ($i=1;$i<10;$i++) { 
    function my_function_$i() {
    //Parse error: syntax error, unexpected T_VARIABLE, expecting '('        
        include($i.'.php');
    }
}

ОБНОВЛЕНИЕ:

ОК.закрыл этот вопрос, буду учиться дальше.

Ответы [ 4 ]

8 голосов
/ 27 октября 2011

что-то совершенно не так с вашей архитектурой, если вы сталкиваетесь с таким вопросом.
Кажется, вы не понимаете, для чего нужны функции.1005 * но one function my_function($i)

Не должно быть и перечисленных включений.Для чего нужны эти php файлы?
1 голос
/ 27 октября 2011

Проверьте это - может быть, то, что вы ищете

http://php.net/manual/en/function.create-function.php

с этой страницы:

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>
0 голосов
/ 27 октября 2011

Во-первых, это ужасная вещь.Попробуйте использовать замыкания , или create_function(), или передать $i в качестве аргумента.

Во-вторых, единственный способ сделать это (ради бога, не ) с eval():

for ($i = 1; $i < 10; $i++) { 
    eval("function my_function_$i() {
        include('$i.php');
    }");
}
0 голосов
/ 27 октября 2011

Может быть, вы можете использовать eval для этого:

for ($i=1;$i<10;$i++) { 
    eval('function myfunc_'.$i.'(){echo '.$i.';}'); 

}

myfunc_5();

//Output
//5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...