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'));
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河里挖泥鳅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值