PHP 根据参数名称调用php方法

http://php.net/manual/en/reflectionmethod.invokeargs.php
<?php

class HelloWorld {

    public function sayHelloTo($name,$test) {
        return 'Hello ' . $name." test :".$test;
    }
    
    /**
     * Pass method arguments by name
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public function __named($method, array $args = array())
    {
     $reflection = new ReflectionMethod($this, $method);
    
     $pass = array();
     foreach($reflection->getParameters() as $param)
     {
     /* @var $param ReflectionParameter */
     if(isset($args[$param->getName()]))
     {
     $pass[] = $args[$param->getName()];
     }
     else
     {
     $pass[] = $param->getDefaultValue();
     }
     }
    
     return $reflection->invokeArgs($this, $pass);
    }

}

$obj=new HelloWorld();
echo $obj->__named('sayHelloTo', array('test'=>'test','name'=>'Mike'));

// $reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
// echo $reflectionMethod->invokeArgs(new HelloWorld(), array('test1'=>'test','name'=>'Mike'));
?>

文章来源: PHP 根据参数名称调用php方法

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:PHP 根据参数名称调用php方法