| 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: 14 let
|
|||
0