PHP如何通过继承实现函数内调用其他函数并输出执行结果
PHP继承实现函数调用及输出实现指南
基础调用可行性说明
你描述的需求完全可以通过PHP继承机制实现,你给出的示例代码本身是合法的实现逻辑,仅需要满足两个前置条件即可正常运行:
- 父类
Patient已完成定义 - 父类中存在访问修饰符为
public或protected的GeneralInfo()方法(private修饰的方法无法被子类继承调用) GeneralInfo()方法存在返回值,才能通过echo输出对应内容
补全后的可运行示例代码如下:
<?php // 定义父类 class Patient { // 可继承的通用信息方法,返回字符串内容 protected function GeneralInfo() { return "患者姓名:张三 | 年龄:30 | 就诊编号:20240520007"; } } class Clinic extends Patient{ function getPatientsInfo(){ // 调用继承自父类的方法,输出返回值 echo $this->GeneralInfo(); } } $patient = new Clinic; $patient->getPatientsInfo(); // 运行输出:患者姓名:张三 | 年龄:30 | 就诊编号:20240520007
注意:如果父类方法使用
private修饰,子类调用时会抛出方法未定义的错误,跨类调用时需根据场景合理选择访问修饰符。
继承场景下函数内实例化调用其他函数的实现
分两种常见场景实现:
场景1:实例化同一继承体系内的其他类
<?php class Patient { protected function GeneralInfo() { return "患者姓名:张三 | 年龄:30 | 就诊编号:20240520007"; } } // 同继承体系的另一个子类 class MedicalRecord extends Patient { public function getHistory() { return " | 过往病史:无药物过敏史,无慢性基础病"; } } class Clinic extends Patient{ function getFullInfo(){ echo $this->GeneralInfo(); // 函数内实例化同体系子类,调用对应方法 $record = new MedicalRecord(); echo $record->getHistory(); } } $clinic = new Clinic; $clinic->getFullInfo(); // 运行输出:患者姓名:张三 | 年龄:30 | 就诊编号:20240520007 | 过往病史:无药物过敏史,无慢性基础病
场景2:实例化非继承体系的外部类
继承逻辑不影响普通类的实例化调用,正常实例化后调用方法即可:
<?php // 外部工具类 class TextFormatter { public function addStyle($content) { return "<div style='padding: 10px; border: 1px solid #eee;'>{$content}</div>"; } } class Patient { protected function GeneralInfo() { return "患者姓名:张三 | 年龄:30 | 就诊编号:20240520007"; } } class Clinic extends Patient{ function getStyledInfo(){ $info = $this->GeneralInfo(); // 实例化外部类调用方法 $formatter = new TextFormatter(); echo $formatter->addStyle($info); } } $clinic = new Clinic; $clinic->getStyledInfo();
内容的提问来源于stack exchange,提问作者pedro penduko
相关产品推荐
相关产品推荐

