extends可以根绝条件动态更换吗?

class base extends Controller
class base extends Common
比如像上面这个,能不能根据数据库内存的字段内容的改变,从而extends不同呢
请教各位指点

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
fatrbaby
最佳答案

不能。变量需要在执行阶段才能确定他的值。而extends需要在编译阶段(PHP则应是解析抽象语法树阶段)决定继承的父类,以便加载进内存进行解析;所以你要动态更换继承的父类的话,编译器就会很懵逼。有类似可以动态“更换”类的语法,如Java里的泛型,不过使用比较局限。

2年前 评论
讨论数量: 7
chowjiawei

把这2个东西 做成2个stub

file

在需要判断条件的地方,将文件删除后,填充你需要的那个stub 以下例子给你参考,例子是如果文件不存在就不会生成,你弄成覆盖或者删除新增即可 file

2年前 评论

①如果Controller和Common是非抽象类 写一个属性,根据需要赋值,如: if(1) $this->property = new Controller; if(2) $this->property = new Common; ②如果Controller和Common是抽象类 把公用方法写出trait,两个都use进去,这样没办法做抽象方法的约束,就要自己注意了

2年前 评论

@chowjiawei 好的好的,我去研究研究

2年前 评论

@milksoul 不好意思,我没太懂 :grin:

2年前 评论

设计模式中,抽象工厂模式应该能解决你的问题

2年前 评论
fatrbaby

不能。变量需要在执行阶段才能确定他的值。而extends需要在编译阶段(PHP则应是解析抽象语法树阶段)决定继承的父类,以便加载进内存进行解析;所以你要动态更换继承的父类的话,编译器就会很懵逼。有类似可以动态“更换”类的语法,如Java里的泛型,不过使用比较局限。

2年前 评论
陈先生

考虑一下面向接口编程,和trait

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!