6

Ist es möglich, eine Art von prototypal Vererbung in PHP zu verwenden wie es in JavaScript umgesetzt wird?Prototypische Vererbung in PHP (wie in JavaScript)

Diese Frage kam mir nur aus Neugierde in den Sinn, nicht dass ich sowas umsetzen müsste und gegen die klassische Vererbung gehen würde. Es ist einfach ein interessantes Gebiet zum Erkunden.

Gibt es vorkompilierte Funktionen klassisches Vererbungsmodell in PHP kombinieren mit irgendeiner Art von Prototypische Vererbung mit einer Kombination von anonymen Funktionen?

Sagen wir, ich habe eine einfache Klasse für 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(); 

Antwort

2

Sie die Prototype Creational Pattern etwas ein wenig ähnlich, dies erreichen können, sondern echte prototypische Vererbung wie in JavaScript gefunden ist afaik nicht möglich.

Wenn Sie etwas wie Mixins/Traits haben möchten, könnten Sie Decorators verwenden.

Es gibt eine RFC about whether to have traits in PHP6 obwohl.

Was Sie tun könnten, ist Prototyp Muster, die den Lebenszyklus seiner geklonten Objekte durch eine SplObjectStorage verfolgt. Wenn der Prototyp geändert wird, würde der Builder durch die Karte gehen und die Instanzen entsprechend anpassen. Monkey Patching müsste durch runkit getan werden. Klingt nicht zu machbar imho :)

+0

Danke für die ausgezeichneten Quellen. Eigenschaften in PHP6 sehen interessant aus, aber heutzutage ist es schwierig Webhosting auch mit 'PHP 5.3.0' zu finden (erforderlich für anonyme Magie :-D). Das Prototype Muster sieht vielversprechend aus. Dekoratoren sehen so aus, als würden sie die Einfachheit von Proto auflösen, da sie eine Art Dependency Injection erfordern –

Verwandte Themen