代码之家  ›  专栏  ›  技术社区  ›  Juraj Blahunka

PHP中的原型继承(如JavaScript中的原型继承)

  •  7
  • Juraj Blahunka  · 技术社区  · 15 年前

    有没有可能使用某种 PHP中的原型继承 就像是在 JavaScript ?

    我想到这个问题只是出于好奇心,而不是为了实现这一点而违背传统继承。感觉就像是一个有趣的探索区域。

    是否有预构建功能 结合经典继承模型 在PHP中 原型继承 匿名函数的组合?

    假设我有一个简单的用户模型类

    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();
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Gordon Haim Evgi    15 年前

    你可以使用 Prototype Creational Pattern 要实现与此类似的功能,但在JavaScript中找到的真正原型继承是不可能的。

    如果你想拥有类似混血儿/特性的东西,你可以使用 Decorators .

    有一个 RFC about whether to have traits in PHP6 不过。

    您可以做的是使用原型模式,通过splObjectStorage跟踪克隆对象的生命周期。每当原型被更改时,构建器将遍历地图并相应地调整实例。猴子修补必须通过 runkit 不过。听起来不太可行,imho:)