问题围绕着是否可以声明像“ihatefooexamples()”这样的函数,然后在 if 条件块中“重新声明” 。本质上,其目的是覆盖函数的行为。
不幸的是,这个特定查询的答案是“否”。 PHP 不支持按照问题提出的方式覆盖函数。
但是,PHP 通过面向对象编程 (OOP) 提供了一种强大的机制,称为多态性来实现类似的功能。考虑以下代码:
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"; } } $foo = new Foo(); if (10 == $_GET['foolevel']) { $foo = new FooBar(); } echo $foo->ihatefooexamples();
在此代码中:
这种技术允许我们通过在运行时切换不同的实现来动态地改变类函数方法的行为,有效地达到了与覆盖函数类似的效果。
以上是PHP 可以像其他语言一样重写函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!