6

是否有可能僱用某種原型繼承PHP就像它在中實現的那樣JavaScript在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(); 

回答

2

可以使用Prototype Creational Pattern實現有點類似於此的東西,但真正的原型繼承像在JavaScript中發現AFAIK是不可能的。

如果您正在尋找mixin/traits,可以使用Decorators

雖然有RFC about whether to have traits in PHP6

你可以做什麼,有Prototype模式,通過SplObjectStorage跟蹤它的克隆對象的生命週期。無論何時更改原型,Builder都會遍歷地圖並相應地調整實例。雖然猴子補丁必須通過runkit來完成。聽起來不太可行,恕我直言:)

+0

感謝您的優秀資源。在PHP6中的特性看起來很有趣,現在很難找到即使使用PHP 5.3.0(匿名魔術需要:-D)的webhosting。 原型模式看起來很有前途。裝飾者看起來會破壞Proto的簡單性,因爲它們需要某種依賴注入 – 2010-02-03 13:44:41