Confidence
Confidence

Reputation: 2303

PHP Strings/Functions: Converting a string into a chain of functions

Having a string like

12345.find_user.find_last_name

how can i split at the charachter "." and convert it to a function-call:

find_last_name(find_user(12345));

and so on....could be of N-Elements (n-functions to run)....how do i do this effectivly, performance-wise also?

Edit, here is the solution based on your replies

thanks Gaurav for your great help. Here is my complete solution based on yours:

i protected the foreach with if(function_exists($function)){ to protect the whole thing from fatal php errors, and i added a complete example:

$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';

}

Upvotes: 2

Views: 149

Answers (1)

Gaurav
Gaurav

Reputation: 28755

$string =  '12345.find_user.find_last_name';
$functions = explode('.', $string);
$arg = array_shift($functions);
foreach($functions as $function){
    $arg = $function($arg);
}

echo $arg;

Upvotes: 2

Related Questions