Les menus et les barres de navigation de construction sont un jeu d'enfant avec Twitter Bootstrap. La création de navigation élégante est sans effort. Bien que suffisant pour de nombreux projets, vous pourriez avoir besoin d'un contrôle plus fin sur les éléments de menu et les liens. Par exemple, imaginez le chargement des éléments de menu d'une base de données ou restreignant l'accès en fonction des autorisations utilisateur. Les solutions statiques échouent ici; Une approche dynamique est nécessaire.
Ce tutoriel montre un constructeur de menu dynamique PHP. C'est une série en deux parties. La première partie couvre le code de démonstration et la classe Menu
; La deuxième partie détaillera d'autres classes et des exemples d'utilisation.
Caractéristiques de clés
Menu
offre un filtrage, permettant l'affichage conditionnel des éléments basés sur des critères spécifiques. Objectifs du projet
L'objectif est de créer efficacement les menus avec un code PHP propre, professionnel et moderne. La fonctionnalité souhaitée comprend:
// Create the menu $menu = new Menu; // Add items $menu->add('Home', ''); $menu->add('About', 'about'); $menu->add('Services', 'services'); $menu->add('Portfolio', 'portfolio'); $menu->add('Contact', 'contact');
//... $about = $menu->add('About', 'about'); $about->add('Who we are?', 'who-we-are'); $about->add('What we do?', 'what-we-do'); //...
//... $menu->add('About', ['url' => 'about', 'class' => 'about-li active', 'id' => 'about-li']); //...
//... $about = $menu->add('About', ['url' => 'about', 'class' => 'about-li active', 'id' => 'about-li']); $about->link->append('<b></b>') ->prepend(''); //...
$menu = new Menu; $menu->add('Home', ''); $menu->add('About', 'about'); $menu->add('Services', 'services'); $menu->add('Portfolio', 'portfolio'); $menu->add('Contact', 'contact'); $menu->filter(function ($item) { if (/* statement */) { return true; } return false; });
//... // Render as an unordered list echo $menu->asUl(); // Render as an ordered list echo $menu->asOl(); // Render as a div echo $menu->asDiv(); //...
Structure du générateur de menu
Le constructeur de menu se compose de trois classes:
Menu
Item
Link
Classe de menu (menu.php)
<?php class Menu { protected $menu = []; protected $reserved = ['pid', 'url']; // ... methods will be added here ... } ?>
maintiendra les objets $menu
. Item
contient des clés utilisées en interne, les distinguant des attributs HTML. $reserved
(Le code restant pour les classes Menu
, Item
et Link
, ainsi que leurs méthodes, seraient inclus ici, similaires à l'entrée d'origine, mais éventuellement avec des ajustements mineurs pour la clarté et le style cohérence.) En raison de la durée du code, il est omis ici, mais la structure et la fonctionnalité suivraient la description dans l'invite d'origine. La clé est de décomposer le code en morceaux gérables et de se concentrer sur la logique principale de chaque méthode. Les fonctions d'assistance (getUrl
, extractAttr
, parseAttr
) sont cruciales pour gérer les options transmises à la méthode add
. Les méthodes de rendu (asUl
, asOl
, asDiv
) offrent une flexibilité dans la sortie de la structure du menu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!