6

¿Es posible emplear algún tipo de herencia de prototipos en PHP como se implementa en JavaScript?herencia de prototipos en PHP (como en JavaScript)

Esta pregunta vino a mi mente solo por curiosidad, no es que tenga que implementar tal cosa y vaya en contra de la herencia clásica. Simplemente se siente como un área interesante para explorar.

¿Hay prefabricados funciones a combinan modelo de herencia clásica en PHP con algún tipo de herencia de prototipos con una combinación de funciones anónimas?

Digamos que tengo una clase simple para 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(); 

Respuesta

2

Puede utilizar el Prototype Creational Pattern para lograr algo en cierto modo similar a este, pero la herencia de prototipo real, como se encuentra en JavaScript no es posible que yo sepa.

Si buscas algo como mixins/rasgos, puedes usar Decorators.

Sin embargo, hay un RFC about whether to have traits in PHP6.

Lo que podría hacer es tener un patrón Prototype que rastree el ciclo de vida de sus objetos clonados a través de SplObjectStorage. Cada vez que se cambia el prototipo, el constructor recorre el mapa y ajusta las instancias en consecuencia. El parche de mono debería hacerse a través del runkit. No suena demasiado factible :)

+0

Gracias por sus excelentes fuentes. Los rasgos en PHP6 parecen interesantes, hovewer hoy en día es difícil encontrar alojamiento web incluso con 'PHP 5.3.0' (requerido para magia anónima :-D) .. Los patrones de prototipos parecen prometedores. Los decoradores parecen romper la simplicidad de Proto, ya que requieren algún tipo de Inyección de Dependencia –

Cuestiones relacionadas