Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho essa função para criar um menu
function menu($array){
$html = "\n<ul>\n";
foreach($array as $label=>$link):
if(is_string($link)):
if($_SERVER['PHP_SELF']==$link):
$html.="\t<li><a href=''><strong>". $label ."</strong></a></li>\n";
else:
$html.="\t<li><a href='" . $link . "' >". $label ."</a></li>\n";
endif;
elseif(is_array($link)):
$html.="\t<li><a href='#'>". $label . "</a>";
$html.=menu($link);
$html.="</li>\n";
endif;
endforeach;
$html.= "</ul>\n";
return $html;
}
Ela precisa receber um array assim:
$arr = array(
'home' => '/',
'loacalhost'=> array(
'cria menu'=>'/criamenu.php', 'octal'=>'/octal.php'
),
'brasileirao' =>array(
'serieA' => array(
'coritiba'=>'globoesporte.com/coritiba',
'palmeiras'=>'globoesporte.com/palmeiras',
),
'serieB' => array(
'america'=>'globoesporte.com/america-rn',
'vasco'=>array(
'paginia inicial' => 'globoesporte.com/vasco',
'ultimos resultados'=> 'globoesporte.com/vasco/ultimos-resultados'
),
),
),
'sair'=>'/logout'
);
Ela funciona legal. OK, o problema não é esse.
Eu estou querendo dar um upgrade nela, bolando uma forma de criar esse array mais automaticamente. Alguma coisa do tipo
$menu->add('/', 'home')
->add(1, 'localhost')
->add('criamenu.php', 'criar menu',1)
->add('octal.php', 'octal', 1);
e assim por diante.
Nesse caso, quando o primeiro parametro de add() for um número, ele será tido como um container de links, e nao como um link mesmo, então os sublinks dele terão definidos o terceiro parâmetro com o número do seu "pai". Quando add() tiver uma string como primeiro parametro, entao ele será um link mesmo.
Essa forma é viável? Alguém poderia sugerir uma forma mais fácil de criar os links?
Bom destacar que não estou nem começando com o código ainda. Só quero uma forma fácil de chamar as funções. Alguém sugere alguma coisa?
Carregando comentários...