php - 如何将 php 类扩展为覆盖其功能的类
问题描述
好吧,我有这样的结构:
class Creature{
public function sayHi(){
echo "Hi";
}
}
class HumanType extends Creature(){
}
class Human extends HumanType{
}
class Human232 extends Human{
public function sayHi(){
echo "Hello, bro";
}
}
class Human457 extend Human{
}
$Human = new Human232($id);
echo $Human->sayHi(); //Hello, bro
$Human2 = new Human457($id);
echo $Human2->sayHi(); //Hi
//And then I have this still to be implemented
class HumanCategory576{
public function sayHi(){
echo "Hi from the category!";
}
}
我当然有很多课程,例如:Human457、Human458、Human459、Human600、Human601
还有:HumanCategory576、HumanCategory577、HumanCategory578、HumanCategory579、HumanCategory580
我想要做的是实现 HumanCategory576 的方式,sayHi() 会打印“Hi from the category!” 仅当(我想)继承它的 Human 类没有覆盖该函数时,例如 Human457。
我希望我足够清楚。
我该怎么办?谢谢
解决方案
我假设您打算class
HumanCategory576
扩展另一个类。
您可以通过is_callable()
以下方式检查HumanCategory576
父级是否具有该功能:
is_callable('parent::sayHi'){
parent::sayHi();
}else{
echo "Hi from the category!";
}
请在 PHP 的文档中使用is_callable 。
<?php
class TestClass extends TestClassParent {
/** @brief Object initialisation callback
@returns void */
public function __construct() {
# do initialisation
# ...
# if we have a parent
if(is_callable('parent::__construct')) {
# then bubble up
parent::__construct();
}
}
}
?>
推荐阅读
- go - 将图像附加到通过 golang gmail api 发送的电子邮件
- azure - 带有用户名和电子邮件的 Azure AD B2C 身份验证
- angular - 从多个按钮的角度捕获事件到单个方法中
- javascript - 在表情符号按钮选择器上监听事件
- javascript - 无法检测到正确的数据值
- java - 如何在新的 ActivityResult API (1.3.0-alpha05) 中获取权限请求?
- css - 锚点上的过渡无法正常工作
- mysql - MySQL GROUP_CONCAT 查询排除记录
- sql - 如何在 t-sql 中使用 patIndex 删除右括号
- sql - VB.NET SQL 语句不从 Access 数据库返回任何行