7

是否可以在 PHP 中使用某种原型继承,就像在JavaScript中实现的那样?

出于好奇,我想到了这个问题,而不是我必须实现这样的事情并违背经典继承。这只是一个有趣的探索领域。

是否有预构建函数将 PHP 中的经典继承模型与某种原型继承与匿名函数的组合相结合?

假设我有一个简单的 UserModel 类

class UserModel implements PrototypalInheritance
{
    // setters, getters, logic..
    static public function Prototype () {}
}

$user = new UserModel();

UserModel::prototype()->getNameSlug = function () {
    return slugify($this->getUserName());
}

echo $user->getNameSlug();
4

1 回答 1

3

您可以使用原型创建模式来实现与此有些相似的东西,但是像在 JavaScript 中发现的真正的原型继承是不可能的。

如果你想拥有类似 mixins/traits 的东西,你可以使用Decorators

不过,有一个关于是否在 PHP6 中具有特征的 RFC

您可以做的是拥有通过 SplObjectStorage 跟踪其克隆对象的生命周期的原型模式。每当原型发生变化时,Builder 都会遍历地图并相应地调整实例。不过,猴子修补必须通过runkit完成。听起来不太可行恕我直言:)

于 2010-02-03T13:21:40.780 回答