OOP:给变量分配一个方法


OOP: Assign to variable a method

我试图将一个方法中的变量赋值给另一个方法(作为函数)。

所以也许在方法"A"中,我想将方法"B"赋值为函数。

我试过了,但var_dump为false,参数$fn被视为字符串(我认为)。

<?php
class MyClass {
    public function call( $fn ) {
        var_dump( is_callable( $this->$fn ) );
    }
    public function required( $str ) {
        return empty( $str );
    }
}
$class = new MyClass;
$class->call( 'required' );

这可能是一个更好的方法,但我认为这就是你想要的:

class MyClass
{
    public function call($function, $parameters = null)
    {
        if (method_exists(__CLASS__, $function)) {
            return $this->{$function}($parameters);
        }
    }
    public function required($string) 
    {
        return empty($string);
    }
}
$class = new MyClass;
var_dump($class->call('required', 'yo'));

不要完全说明你为什么要这样做,我想可能有更好的方法来实现你的最终目标,但以上至少应该满足你的要求。它限制了它处理参数的方式,但这是一个起点。