我在书类中有一个方法display()
。
$name = 'display()';
$book = new Book('PHP Object-Oriented Solutions', 300);
$book->$name;
如何使用$book->$name
答案 0 :(得分:3)
你需要告诉PHP你正在尝试执行一个方法,而不是在变量本身,而是在实际的代码中:
$name = 'display';
$book = new Book('PHP Object-Oriented Solutions', 300);
$book->$name();
否则,正如您所见,它会将$name
视为属性名称,这是正确的......如果您有两个属性和名为'display'的方法,没有办法用你尝试过的方法来区分两者。
答案 1 :(得分:0)
最干净的方式(至少imo)是使用类似的东西:
$name = 'display';
$book = new Book('PHP Object-Oriented Solutions', 300);
call_user_func([$book, $name]); // This looks cleaner and/or more obvious on first sight.
// call_user_func_array([$book, $name], $arrayOfArguments);
// And as @Narf suggested (and I agree cuz we move forward)
call_user_func([$book, $name], ... $arrayOfArguments);
是的,您可以将参数传递给此函数,该函数将传递给函数,但您必须在可调用数组之后列出它们。为了避免这样做(很难维护而不是总是你想要的)你可以使用call_user_func_array
接受一个参数数组作为传递给callable的第二个参数。