在 PHP 中,不可能按照原始问题指定的方式覆盖函数。然而,还有其他方法可以达到类似的结果。
原始方法:
function ihatefooexamples() { return "boo-foo!"; }; // Redeclaration if ($_GET['foolevel'] == 10) { function ihatefooexamples() { return "really boo-foo"; }; };
这种方法不可行,因为 PHP 不允许使用相同的函数重新定义函数名称和参数。
使用的替代方法OOP:
通过面向对象编程(OOP)实现多态性是一个更好的解决方案。
创建一个接口 Fooable 和两个实现它的类 Foo 和 FooBar。
interface Fooable { public function ihatefooexamples(); } class Foo implements Fooable { public function ihatefooexamples() { return "boo-foo!"; } } class FooBar implements Fooable { public function ihatefooexamples() { return "really boo-foo"; } }
根据 foolevel 实例化相应的类并调用 ihatefooexamples
$foo = new Foo(); if (10 == $_GET['foolevel']) { $foo = new FooBar(); } echo $foo->ihatefooexamples();
通过使用这种 OOP 方法,我们可以根据输入参数动态更改 ihatefooexamples 函数的行为,同时保持函数名称的一致性。
以上是我可以像这样覆盖 PHP 中的函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!