Autor | Zpráva | ||
---|---|---|---|
XYZ Profil * |
#1 · Zasláno: 18. 2. 2013, 23:15:20
Dobrý den, chci se zeptat na takovou možná blbost. když mám ve třídě metodu __toString, tak pokaždé když napíšu echo $objekt, vypíše se název té třídy. No ale co když chci aby se třeba vrátilo pole?
Například: class Array { private $data; public function __construct() { $this->data = func_get_args(); } } $Pole = new Array(1, 2, 3, 4); echo $Pole; //Vrátí array echo count($Pole) //Vrátí 4 |
||
Jan Tvrdík Profil |
#2 · Zasláno: 19. 2. 2013, 00:03:57
XYZ:
„No ale co když chci aby se třeba vrátilo pole?“ To je trochu složitější a obecně to vyřešit nejde (není žádná __toArray() metoda). Nicméně lze to vyřešit částečně. Chceš-li, aby fungovalo volání count, tak stačí implementovat rozhraní Countable.
class Array implements Countable { private $data; public function __construct() { $this->data = func_get_args(); } public function count() { return count($this->data); } } Pokud bys chtěl, aby se objekt dal procházet např. pomocí foreach , tak musíš implementovat rozhraní Iterator nebo IteratorAggregate. Pokud chceš, aby se dalo přistupovat k prvkům přes hranaté závorky (např. $pole[7] ), tak musíš implementovat rozhraní ArrayAccess.
|
||
XYZ Profil * |
#3 · Zasláno: 19. 2. 2013, 06:27:19
No já to myslel obecně, ne jenom na to count, chtěl jsem aby objekt vracel přímo svůj datový typ, který reprezentuje...No tak ok, budu to řešit přes metody. Díky za radu
|
||
Časová prodleva: 13 let
|
0