| Autor | Zpráva | ||
|---|---|---|---|
| Amunak Profil |
#1 · Zasláno: 18. 7. 2012, 14:44:59
Zdravím, udělal jsem si jednoduchou třídu menu která přijímá instance položek menu. Pro výpis by se mi hodilo mít přímý přístup k těmto položkám-objektům v cyklu, například:
$menuItems = array(
'uvod' => new MenuItem('/uvodni-stranka/', 'Úvod'),
'kontakt' => new MenuItem('/kontakt/', 'Kontaktní informace')
);
$menu = new Menu($menuItems);
echo 'Seznam odkazů v menu:<br>';
foreach ($menu as $menuItem)
{
echo $menuItem->getLink().'<br>';
}Něco takového umí třeba dibi, ovšem z jejího kódu jsem nebyl schopný vykoukat jak to dělá. |
||
| Keeehi Profil |
#2 · Zasláno: 18. 7. 2012, 15:16:37
|
||
| Majkl578 Profil |
Často se používá IteratorAggregate, stejně tak to dělá i DibiResult. Ty budeš nejspíš položky předané konstruktorem uchovávat v poli v nějaké vlastnosti, pak můžeš použít IteratorAggregate v kombinaci s ArrayIterator:
public function getIterator()
{
return new \ArrayIterator($this->items);
} |
||
| Amunak Profil |
Díky Keeehi. Ani nevím, jak jsem na to při hledání mohl nenarazit.
To je taky pěkná blbost co jsem napsal. Protože mám ty položky jako pole v jedné vlastnosti, tak můžu použít ten IteratorAggregate. Díky oběma. Ještě se zeptám - proč před název té třídy dávat lomítko? |
||
| Lamicz Profil |
Protože Namespaces
Pokud je nepoužíváš, nemusíš je psát |
||
|
Časová prodleva: 13 let
|
|||
0