6

Est-il possible d'employer une sorte de héritage prototypal en PHP comme il est mis en œuvre JavaScript? Cette question m'est venue par curiosité, pas que je doive mettre en œuvre une telle chose et aller à l'encontre de l'héritage classique. C'est juste un endroit intéressant à explorer.héritage prototypal en PHP (comme en JavaScript)

Y at-il des fonctions Prebuild à combinent modèle d'héritage classique en PHP avec une sorte de héritage prototypal avec une combinaison de fonctions anonymes?

Disons que j'ai une classe simple pour 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(); 

Répondre

2

Vous pouvez utiliser le Prototype Creational Pattern pour obtenir quelque chose assez semblable à cela, mais l'héritage réel prototypique comme trouvé en JavaScript n'est pas possible afaik.

Si vous cherchez à avoir quelque chose comme des mixins/traits, vous pouvez utiliser Decorators. Toutefois, il existe un RFC about whether to have traits in PHP6.

Ce que vous pouvez faire, c'est avoir un motif Prototype qui suit le cycle de vie de ses objets clonés à travers un SplObjectStorage. Chaque fois que le prototype est modifié, le constructeur doit parcourir la carte et ajuster les instances en conséquence. Patch de singe devrait être fait par runkit cependant. Ne semble pas trop réalisable imho :)

+0

Merci pour d'excellentes sources. Les caractères de PHP6 semblent intéressants, mais il est difficile de trouver un hébergeur même avec 'PHP 5.3.0' (requis pour la magie anonyme :-D). Les motifs Prototype semblent prometteurs. Les décorateurs ont l'air de briser la simplicité de Proto, car ils ont besoin d'une sorte d'Injection de Dépendance –