Articles of oop

isset en atributos de clase estáticos

class A { public static $foo = 42; } $class = ‘A’; $attribute = ‘foo’; var_dump(isset($class::$attribute)); //gives bool(false) ¿Cómo puedo verificar que este atributo estático existe en esta clase?

Comprender la herencia en php

Soy nuevo en el uso de OOP en PHP (Y en general) y tenía una pregunta sobre la herencia. Tengo las siguientes clases: class OCITable { public function display() { $this->drawHeader(); $this->drawFooter(); $this->drawBody(); } private function drawHeader() { … } private function drawFooter() { … } private function drawBody() { … } } class OCITableServer […]

typehinting: método debe aceptar cualquier $ arg que sea un objeto

Tengo una clase ‘Colección’, que tiene un método de agregar. El método add solo debe aceptar objetos. Entonces este es el comportamiento deseado: $x=5;//arbitrary non-object $obj=new Foo; //arbitrary object $collection=new Collection; $collection->add($obj); //should be acceptable arg, no matter the actual class $collection->add($x); //should throw an error because $x is not an object De acuerdo con […]

Cómo obtener los datos de orden de Magento desde Observer

Ok, he buscado en toda la web y nada funcionó. Los resultados fueron muy inconsistentes. Déjame mostrarte primero lo que tengo aquí. Creará un archivo de exportación al final pero no podrá obtener datos de orden y objetos. class Packagename_Modulename_Model_Observer { public function exportFeed (Varien_Event_Observer $observer) { $order = $observer->getEvent()->getOrder(); $ordered_items = $order->getAllItems(); y en […]

Extendiendo DOMDocument y DOMNode: problema con el objeto de retorno

Estoy tratando de extender la clase DOMDocument para hacer las selecciones de XPath más fáciles. Escribí este fragmento de código: class myDOMDocument extends DOMDocument { function selectNodes($xpath){ $oxpath = new DOMXPath($this); return $oxpath->query($xpath); } function selectSingleNode($xpath){ return $this->selectNodes($xpath)->item(0); } } Estos métodos devuelven un DOMNodeList y un objeto DOMNode, respectivamente. Lo que me gustaría hacer […]

json_encode objetos PHP con sus propiedades protegidas

¿Hay alguna manera de configurar objetos PHP para que cuando intente convertirlos a JSON, se muestren todas sus propiedades protegidas? He leído otras respuestas que sugieren que agregue una función toJson() al objeto, pero eso puede no ayudarme mucho. En la mayoría de los casos, tengo una matriz de objetos y realizo la encoding en […]

Validar la entrada de formulario en los objetos de dominio setters?

Desde que comencé a aprender sobre MVC siempre he validado mis datos de formulario en mis controladores, que es un hábito que recogí mientras revisaba el código de CodeIgniters, pero he aprendido que su forma de hacer ciertas operaciones no es la mejor, simplemente consigue el trabajo hecho. ¿Deberían todos los datos de formulario ser […]

Métodos de clase de control de acceso en PHP

Necesito organizar algún tipo de control de acceso a los métodos de objeto cuando se usa en diferentes contextos (API en mi sistema). Aquí está el ejemplo del código: class A { public function doA(){} public function doB(){} } class APIAClient { public function getA() { return new A(); } } class APIBClient { public […]

Por qué no puedo dividir una clase en varios archivos

TestClass crear una clase TestClass que está dividida en varios archivos. Lo he dividido en 3 archivos donde el primer archivo TestClassPart1.php tiene el inicio de la clase class TestClass { y el último archivo TestClassPart3.php tiene el corchete de cierre de la clase. Estos son los 3 archivos //TestClassPart1.php <?php class TestClass { public […]

Problema de estructura PHP OOP, simula herencia múltiple

Tengo una e-shop con múltiples tipos de productos. Y hubiera pensado en la siguiente estructura Cart_Item — Cart_Product — Cart_Download Order_Item extends Cart_Item — Order_Product — Order_Download El problema es que quiero que Order_Product extienda Order_Item y Cart_Product. Esto se debe a que necesita un método genérico para Order_Item (obtener el precio del pedido no […]