Jur*_*nka 7 javascript php inheritance prototype prototypal-inheritance
是否可以在PHP中使用某种原型继承,就像在JavaScript中实现一样?
出于好奇,我想到了这个问题,而不是我必须实施这样的事情并反对经典继承.它只是一个有趣的探索区域.
是否有预构建函数将 PHP中的经典继承模型与某种具有匿名函数组合的Prototypal继承相结合?
假设我有一个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();
Run Code Online (Sandbox Code Playgroud)
您可以使用原型创建模式来实现与此类似的东西,但是像 JavaScript 中那样的真正原型继承是不可能的。
如果您正在寻找诸如 mixins/traits 之类的东西,您可以使用Decorators。
不过,有一个关于 PHP6 中是否具有特征的 RFC。
您可以做的是使用原型模式,通过 SplObjectStorage 跟踪其克隆对象的生命周期。每当原型发生变化时,构建器都会遍历地图并相应地调整实例。不过, Monkey 补丁必须通过runkit来完成。恕我直言,听起来不太可行:)