PHP Строки / Функции: Преобразование строки в цепочку функций - PullRequest
2 голосов
/ 17 января 2012

Имея строку типа

12345.find_user.find_last_name

как я могу разделить на символ "." и преобразовать его в вызов функции:

find_last_name(find_user(12345));

и т. Д. .... может быть из N-элементов (n-функций для запуска) .... как мне сделать это эффективно, также с точки зрения производительности?

Правка, вот решение, основанное на ваших ответах

спасибо Гаураву за вашу большую помощь. Вот мое полное решение, основанное на вашем:

Я защитил foreach с помощью if(function_exists($function)){, чтобы защитить все это от фатальных ошибок php, и добавил полный пример:

$mystring =  '12345.find_user.find_last_name';

convert_string_to_functions($mystring);

function convert_string_to_functions($mystring){
    $functions = explode('.', $mystring);
    $arg = array_shift($functions);
    foreach($functions as $function){
        if(function_exists($function)){
            $arg = $function($arg);
        } else {
            echo 'Function '.$function.' Not found';
        }
    }

    echo $arg;
}

function find_last_name($mystring=''){

    return $mystring.' i am function find_last_name';

}

function find_user($mystring=''){

    return $mystring.' i am function find_user';

}

1 Ответ

2 голосов
/ 17 января 2012
$string =  '12345.find_user.find_last_name';
$functions = explode('.', $string);
$arg = array_shift($functions);
foreach($functions as $function){
    $arg = $function($arg);
}

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