Friday 26 June 2015

Calling Function and Class Method with Name from String

Here is the easiest way to call a Function, or Class method dinamically, with Name from a String, stored into a variable or array item.

1. Calling function with name stored into a variable use: $variable($parameters)
<?php
function url($adr){
  return 'http://'. $adr;
}

// variable with function name
$fun = 'url';

// calls the functions with name from $fun
$val = $fun('coursesweb.net/php-mysql/');

echo $val;      // http://coursesweb.net/php-mysql/

2. Calling function with name stored into a string in array item use: $array["key"]($parameters)
<?php
function getSum($x, $y){
  return $x + $y;
}

function hi(){
  echo 'Hello Friend';
}

// array with function names
$arr = ['f1'=>'getSum', 'f2'=>'hi'];

// calls the functions with name from $arr array
$sum = $arr['f1'](12, 89);

echo $sum;      // 101
echo $arr['f2']();      // Hello Friend

3. Calling class method with name from string in variable (add the variable with the method name within " {} "):
$object->{$variable}($parameter)
<?php
// PHP Class
class Cls {
  // class method
  public function site($str){
    return 'http://'. $str;
  }
}

// varible with method name
$method = 'site';

$obC = new Cls;
$val = $obC->{$method}('coursesweb.net/');

echo $val;      // http://coursesweb.net/

4. Calling class method with name from string in array item (add the array item with the method name within " {} "):
$object->{$array['key']}($parameters)
<?php
// PHP Class
class Cls {
  // class methods
  public function getSum($x, $y){
    return $x + $y;
  }

  public function hi(){
    return 'Hello Friend';
  }
}

// array with method names
$mts = ['m1'=>'getSum', 'm2'=>'hi'];

$obC = new Cls;
$sum = $obC->{$mts['m1']}(12, 89);
$msg = $obC->{$mts['m2']}();

echo $sum;      // 101
echo $msg;      // Hello Friend

0 comments:

Post a Comment