6

Czy można zatrudnić jakąś prototypal dziedziczenia w PHP jak to jest realizowane w JavaScript?prototypal dziedziczenia w PHP (jak w JavaScript)

To pytanie przychodzi mi na myśl tylko z ciekawości, nie, że muszę wprowadzić takie rzeczy i iść przeciwko klasycznemu dziedziczeniu. Po prostu jest to interesujący obszar do odkrycia.

Czy istnieją prebuild funkcje łączą klasyczny dziedziczenia modelu w PHP z jakimś prototypal dziedziczenia z kombinacji funkcji anonimowych?

Powiedzmy mam prostą klasę dla 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(); 

Odpowiedz

2

Można użyć Prototype Creational Pattern osiągnąć coś nieco podobnego do tego, ale prawdziwe prototypowego dziedziczenia jak stwierdzono w JavaScript nie jest możliwe AFAIK.

Jeśli szukasz czegoś takiego jak mixiny/cechy, możesz użyć Decorators.

Istnieje jednak RFC about whether to have traits in PHP6.

Co można zrobić, to wzór prototypu, który śledzi cykl życia sklonowanych obiektów za pomocą obiektu SplObjectStorage. Ilekroć prototyp zostanie zmieniony, Builder przejdzie przez mapę i odpowiednio dostosuje instancje. Łaty małp musiałyby być wykonane przez runkit. Brzmi niewygodnie imho :)

+0

Dzięki za doskonałe źródła. Cechy w PHP6 wyglądają interesująco, ale obecnie trudno znaleźć webhosting nawet z 'PHP 5.3.0' (wymagane dla anonimowej magii :-D) .. Wzory prototypowe wyglądają obiecująco. Dekoratorzy wyglądają tak, jakby złamali prostotę Proto, ponieważ wymagają pewnego rodzaju Inwencji Dependencji –