方法中的默认参数


Default params in a method?

有没有方法可以调用下面的方法,但只指定末尾的params,并使用其他params的默认值?

$published = true;
$this->display($published);

public function display($name = 'John', $date = 'December', $published = false){
    //$name = 'John'
    //$date = 'December'
    //$published = true
}

您可以使用反射,例如:

<?php
class A
{
    public function display($name = 'John', $date = 'December', $published = false)
    {
        var_dump($name, $date, $published);
    }
    public function test()
    {
        $args = [];
        $reflectionMethod = new ReflectionMethod($this, 'display');
        foreach($reflectionMethod->getParameters() as $parameter) {
            $args[$parameter->getName()] = $parameter->getDefaultValue();
        }
        $args['published'] = true;
        $reflectionMethod->invokeArgs($this, $args);
    }
}
(new A)->test();