Articles of oop

Extender los rasgos con clases en PHP?

¿Por qué no se nos permite extender Rasgos con Clases en PHP? Por ejemplo: Trait T { } Class C use T {} /* or */ Class C extends T {} ¿Hay algún conflicto potencial para tal syntax? No lo creo.

PHP equivalente de enviar y obtener?

Si Ruby es invitada a una fiesta y trae: foobarobject.send(‘foomethod’) .. y Python es invitado a la misma fiesta y trae: getattr(foobarobject, ‘foomethod’)() ¿Qué tiene que traer PHP a la fiesta? Pregunta extra: Si Ruby y Python se pusieran celosos de los favores de la fiesta de PHP, ¿qué términos en inglés buscarían en la […]

PHP: array_map en objeto?

Estoy tratando de escribir una función que formatea cada miembro / variable (cadena) en un objeto, por ejemplo con una función de callback. Los nombres de las variables son desconocidos para mí, por lo que debe funcionar con objetos de todas las clases. ¿Cómo puedo lograr algo similar a array_map o array_walk con objetos?

¿Cómo instanciar dinámicamente un objeto en PHP?

¿Podemos crear e inicializar dinámicamente un objeto en PHP? Este es el código normal: class MyClass{ var $var1 = null; var $var2 = null; . . public function __construct($args){ foreach($args as $key => $value) $this->$key = $value; } } ——————— $args = ($_SERVER[‘REQUEST_METHOD’] == “POST”) ? $_POST : $_REQUEST; $obj = new MyClass($args); El código […]

Error fatal de PHP: no se puede heredar la función abstracta

No entiendo lo que estoy haciendo mal … abstract class Css { abstract protected function parse($data); } abstract class CssElem extends Css { abstract protected function parse($data); } class Modifier extends CssElem { function __construct($data = null) { if( $data ) $this->parse ($data); } protected function parse($data) { // Some code… } } Me da […]

¿Es lo que parece polymorphism en PHP realmente polymorphism?

Intentando averiguar si PHP admite características como la sobrecarga de métodos, la herencia y el polymorphism, descubrí: no soporta la sobrecarga de métodos apoya la herencia Pero no estoy seguro sobre el polymorphism. Encontré este googlear en internet: Debo tener en cuenta que en PHP el polymorphism no es como debería ser. Quiero decir que […]

OO explicación de PHP para un braindead n00b

He estado escribiendo PHP durante aproximadamente seis años y he llegado a un punto en el que creo que debería hacer más para escribir mejor código. Sé que el código orientado a objetos es el camino a seguir, pero no puedo entender el concepto. ¿Alguien puede explicar en términos que cualquier idiota pueda entender, OO […]

¿Por qué se llama automáticamente a un método con el mismo nombre que la clase?

EDITAR: Título editado para hacerlo más útil. Originalmente, no tenía idea de que era el uso de una palabra compartida lo que estaba causando el problema. Esto es muy básico pero bastante misterioso. Tengo dos clases: class Hello { public function hello() { echo “Hello”; } } y class World { public function world() { […]

¿Cómo comprobar si la clase existe dentro de un espacio de nombres?

Tengo esto: use XXX\Driver\Driver; … var_dump(class_exists(‘Driver’)); // false $driver = new Driver(); // prints 123123123 since I put an echo in the constructor of this class exit; Bueno … este comportamiento es bastante irracional (crear objetos de clases que según PHP no existen). ¿Hay alguna forma de verificar si existe una clase bajo el espacio […]

¿Los miembros estáticos podrían usar miembros no estáticos y viceversa?

¿Puedo usar miembros no estáticos dentro de un método estático? p.ej. $this->nonStaticProperty $this->nonStaticMethod() y viceversa, es decir, ¿usar miembros estáticos dentro de métodos no estáticos?