[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-general-es
Subject:    Re: [PHP-ES] converrit cast entre objetos propios
From:       David Blanco <dablanco () gmail ! com>
Date:       2009-02-03 10:34:06
Message-ID: ef2a89510902030234g41b059b5w1e423b06edd57c73 () mail ! gmail ! com
[Download RAW message or body]

Hola!

El día 3 de febrero de 2009 11:15, David Blanco <dablanco@gmail.com> escribió:

> - Extiende la clase ArrayObject (http://es.php.net/arrayobject) y
> redefine el método "current". Documéntalo (phpDoc) indicando que el
> objeto devuelto es de la clase que necesites. El método simplemente
> debe invocar al mismo método de su clase padre, es decir: "return
> parent::current()"
> - Cambia el bucle foreach por un iterator (un ejemplo aquí:
> http://es.php.net/manual/es/arrayobject.getiterator.php)
>
> No lo he probado pero en teoría tendría que funcionar :)

Me corrijo a mi mismo. No, no funciona porque he mezclado dos clases,
ArrayObject y ArrayIterator. El ejemplo no es tan sencillo. Habría que
escribir dos clases:

- Clase que herede de ArrayObject (MiClaseArray)
  En esta habría que redefinir el método "getIterator" y con phpDoc
indicar que devuelve un objeto del tipo "MiClaseIterator". El método
invocaría al método de la clase padre (return parent::getIterator())

- Clase que herede de ArrayIterator (MiClaseIterator)
  En esta habría que redefinir el método "current", como decía en el
anterior correo, y con phpDoc indicar que devuelve un objeto del tipo
"MiClase". El método invocaría al método de la clase padre (return
parent::current()).

De este modo el IDE (si utiliza phpDoc) sabría de qué tipo es el
objeto devuelto en cada iteración del bucle. Un ejemplo de código que
sí funciona:

http://pastebin.com/m6b116a60

Insisto, una locura...

PD: Perdón por el patinazo, es que a veces eso de pensar no se me da muy bien :)


Un saludo

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic