gpt4 book ai didi

涉及静态方法的php抽象类和接口(interface)?

转载 作者:可可西里 更新时间:2023-10-31 22:12:36 27 4
gpt4 key购买 nike

我正在努力找出如何最好地完成我的类(class)设计工作。

我的情况。

我有一个订单抽象类,其中包含订单方法和 2 个子类所需的信息

order_Outbound

和 order_inbound

每个子类需要 2 个名为 create 和 get 的静态公共(public)方法

但是从我读到的关于 php 5.3 的内容来看,你不能有抽象静态方法???

所以我的想法是有一个接管该角色的接口(interface) Order_Interface 但我该如何实现它。我是否仍然在父类中实现它

在这种情况下,父抽象类仍然需要我在抽象类中创建一个 get 和 create 方法。还是我在 child 身上实现它并从抽象类扩展???

还有!!!出站和入站子级都需要创建静态方法,但需要传递不同的参数

接口(interface)中的i可以有public static function create()

并在 order_outbound 的实现中声明它 public static function create($address, $reference, $orderID)

最佳答案

在大多数语言中,包括 PHP,您不能要求类来实现静态方法。

这意味着类继承和接口(interface)都不允许您要求所有实现者都定义一个静态方法。这可能是因为这些功能旨在支持多态性而不是类型定义。在静态方法的情况下,你永远不会有一个对象来解析类型,所以必须显式地执行 ClassName::Method,所以理论上你不会从多态性中获得任何东西。

因此,我看到三个解决方案

  1. 在每个类中声明静态方法(毕竟,你永远不会去

  2. 如果您想要一个方法来创建您的类的实例,但不想要求一个实例来调用此方法,您可以创建“Builder”类来实现此目的(例如 OrderBuilder),这样您就可以实例化一个 OrderBuilder 并调用该对象的 Create 方法来获取 Order 实例。

  3. (推荐)为什么不直接使用 Order 构造函数?

关于涉及静态方法的php抽象类和接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com