gpt4 book ai didi

PHP : implementing states with objects

转载 作者:行者123 更新时间:2023-12-05 08:01:35 25 4
gpt4 key购买 nike

我对如何为对象实现状态感到进退两难。假设我们有这个:

class User {

private $_active;// 1 or 0
private $_deleted;// 1 or 0
...

}

这些属性——正如我所见——暗示了用户对象的状态。我想做的是定义一些事件,如 afterActivate() 或 afterDelete() 以便我可以链接我的例程。 IE。激活后更新一些计数器,删除后也更新一些计数器...

所以我目前正在考虑两种方法 - 第一种是创建类 Activable 和 Deletable(不要介意命名),然后让 User 通过继承层次结构继承这些类。

class Activable {

protected afterActivate(){};

}

class Deletable {

protected afterDelete(){};
}

class Activable extends Deletable {}
class User extends Activable{}

我发现这种方法有两个问题 - 第一个是 Activable 类现在隐含了错误的 Deletable 状态,第二个问题是 - 如果我有更多状态 - 5-6 个状态,继承层次结构可能会变得相当复杂. (因为 User 将扩展模型类,模型类将扩展其他内容等...)

第二种方法是在 PHP 中使用特征并使用它们来实现这一点。所以我会有类似的东西

class User{
use Activable, Deletable;

}

哪种方法更好 - 也许是第三种方法?我的方向是否正确?

谢谢。

最佳答案

通常你会使用Marker Interface是为了这种事。
我想这是我们正在谈论的某种 ORM?比我还假设有某种对象处理您的实体的持久性。让该对象检查 $entity instanceof Deletable 并据此采取行动。

关于PHP : implementing states with objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954180/

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