【发布时间】:2016-11-13 01:40:27
【问题描述】:
我怀疑也许有人可以在这里回答。 我的代码运行良好,但我很确定,我做错了。 必须有一种更简单、更清洁的方法来实现它。
假设这个类:
class myClass {
public static function myFunctionOne ($arg_one, $arg_two, $arg_tree) {
echo $arg_one;
myClass::$arg_two($arg_tree);
}
public static function myFunctionTwo ($arg_four) {
echo $arg_four;
}
}
然后你在某个地方调用上面的类(我的例子是一个内置在 PHP 文件中的 HTML 菜单),如下所示:
myClass::myFunctionOne('echo a string', 'myFunctionTwo', 'echo forth value');
这很好用,它会输出:
echo a string echo forth value
但这合法吗?
对我来说它看起来很粗略。 我可以使用这样的函数,在带参数的函数中调用带参数的函数吗?
【问题讨论】:
-
是的,它是合法的。像这样,您可以根据用户输入动态调用函数。你不妨看看php.net/manual/de/function.call-user-func.php。另一个问题是:你真的需要动态函数调用吗?大多数不是。
-
嗯,我几乎可以肯定,我可以做不同的事情,但上面的案例只是我正在做的总结 sn-p。我目前正在尝试学习一些 OOP(是的,以上都是我假设的 OOP :P)。以上只是更大的 Bootstrap Accordion 的一小部分,我想在其中创建 Tab id 和 href,但也只需更改 args 就可以将具有相同功能的主体和菜单标题合二为一。可能有更好的方法,但人们会在途中学习 :) 非常感谢您确认这是一种合法的方法,而不是“随便用”的情况 :)
-
不好的方法。只有静态方法的类可以有隐藏的依赖关系。
-
@RomanPerekhrest 这就是我问的原因。你能详细说明一下吗?对不起,我是OOP的初学者
-
另外,您的代码不会验证
myClass::$arg_two方法是否在myClass上定义
标签: php function class arguments