recherche
Maisondéveloppement back-endtutoriel phpComment créer un système de routage pour une application PHP à partir de zéro

Si vous n'êtes qu'au début de votre parcours dans le développement PHP, il est probable que vous utilisiez des noms de fichiers complets dans l'URL pour naviguer dans votre application, comme server/contact.php. Ne vous inquiétez pas, nous avons tous commencé de cette façon, et c'est ainsi que nous apprenons.

Aujourd'hui, je souhaite vous aider à améliorer la façon dont vous parcourez les fichiers dans votre application. Nous parlerons de routage, car il est crucial dans tout application moderne. Cela vous aidera à faire un pas en avant dans votre développement PHP professionnel.

Un système de routage mappe simplement un HTTP requête à un gestionnaire de requêtes (fonction ou méthode). En d'autres termes, il définit la façon dont nous naviguons ou accédons aux différentes parties d'une application sans le vous devez taper le nom du fichier. Vous pouvez le faire en créant ou en définissant itinéraires (ou chemins). Par exemple, la route serveur/contact nous permet d'accéder au fichier contact.php.

截屏2024-11-29 16.11.16.png

Comment fonctionne le routage

Tout d'abord, laissez-moi vous rappeler ce que un routage est. Routage nous permet de mieux structurer notre application et de nous débarrasser du désordre URL. Ce sont deux fonctionnalités principales offertes par tout bon système de routage :

  • Définit l'action à exécuter pour chaque requête entrante.
  • Génère des URL optimisées pour le référencement (par exemple /views/users au lieu de view/user.php?all).

Pour faire un système de routage, nous avons besoin d'un routeur, qui n'est rien de plus que le fichier d'entrée à notre application. Par défaut, ce fichier d'entrée est nommé index.php. A l'intérieur du fichier, nous définissons le système de routage grâce aux instructions [switch](https://www.php.net/manual/en/control-structures.switch.php) ou [match](https://www.php.net/manual/en/control-structures.match.php).

Enfin, nous devons rediriger toutes les requêtes vers le routeur. C'est fait dans le fichier de configuration du serveur PHP.

Configuration du projet

Avant d'aller de l'avant, voyons à quoi ressemblera le projet comme :

Comment créer un système de routage pour une application PHP à partir de zéroStructure des fichiers

Utilisez les commandes shell ci-dessous pour lancer le projet :

mkdir php-routing & cd php-routingtouch index.php .htaccess
  • .htaccess : une configuration Apache au niveau du répertoire Vous n'en avez pas besoin si vous utilisez un serveur NGINX.
  • index.php : Il s'agit du routeur et du fichier d'entrée du projet All. les demandes entrantes seront redirigées ici.
  • vues : ce dossier contient toutes les interfaces utilisateur du projet.

Comment rediriger toutes les requêtes HTTP vers le routeur

Nous J'ai dit plus tôt que la redirection se faisait dans le serveur PHP fichier de configuration. Vous devrez donc faire quelques ajustements selon que vous utilisez un serveur Apache ou NGINX.

Redirection à l'aide d'Apache

Ici, nous pouvons facilement utiliser le fichier .htaccess que nous avons déjà créé à la racine du projet. Ajoutez les directives ci-dessous :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
  • ligne 1 : Nous activons le moteur de réécriture d'exécution du serveur Apache.
  • ligne 2 : Nous limitons l'accès aux fichiers physiques.
  • ligne 3 : Nous redirigeons toutes les requêtes à venir vers le index.php.

Remarque : Si le site ou l'application est noté à la racine du serveur (ou si nous n'avons pas d'hôte virtuel), voici à quoi devrait ressembler le .htaccess :

RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]

Dans le code ci-dessus, remplacez /folder/ par le nom de le dossier contenant votre site.

Redirection à l'aide de NGINX

Le fichier de configuration par défaut s'appelle nginx.conf. Ce fichier peut être trouvé dans etc/nginx, usr/local/nginx/conf ou /usr/local/etc/nginx.

Pour rediriger vers index.php, utilisez la commande ci-dessous :

location / {
        try_files $uri $uri/ /index.php}

Le bloc location / spécifie qu'il s'agit d'une correspondance pour tous les emplacements, sauf si location /est explicitement spécifié.

La directive try_files indique au serveur que pour toute requête adressée à l'URI qui correspond au bloc à l'emplacement, essayez d'abord le $uri (ou $uri/), et si le fichier est présent, servez-le. Sinon, l'option de secours (index.php) est utilisée. Et ce dernier comportement est ce que nous souhaitons.

Recharger le serveur après la modification.

Comment créer le système de routage

Nous savons maintenant comment fonctionne le routage, et nous sommes même en envoyant toutes les demandes au routeur. Il est maintenant temps d'écrire le code du routeur dans index.php.

Tout d'abord, créez une variable pour contenir la chaîne de requête HTTP :

$request = $_SERVER['REQUEST_URI'];

Cette variable nous aidera à comparer avec de nombreux itinéraires (chemins) et appelez l'interface de visualisation appropriée.

switch ($request) {
     case '/views/users':
        require __DIR__ . '/views/users.php';

     case '/views/department':
        require __DIR__ . '/views/dep.php';}

Que se passe-t-il ici ? L'instruction switch est similaire à une série d'instructions if sur la même expression (variable). Il exécute un code uniquement lorsqu'une instruction case est trouvée dont l'expression est évaluée à une valeur qui correspond à la valeur de l'expression switch. Laissez-moi illustrer cela pour que vous puissiez bien comprendre.

Considérons que notre variable contient la valeur /views/users/. Lorsque le morceau de code ci-dessus sera exécuté, PHP vérifiera si la valeur /views/users est égale à la valeur de l'instruction case, qui dans notre cas est /views/users. Ainsi, cette condition sera évaluée comme vraie, PHP appellera le fichier /views/users.php. Si la condition est évaluée comme fausse, PHP vérifiera la prochaine instruction case jusqu'à la fin du bloc switch.

Remarque : chaque fois que l'instruction case est évaluée comme vraie, PHP continuera à exécuter le code dans le cas suivant. déclarations sans qu’il soit nécessaire d’évaluer ces déclarations de cas. Dans notre cas, PHP nécessite également vues/dep.php. Pour éviter ce "mauvais comportement", vous devez ajouter une instruction break après chaque instruction case.

Rassemblons maintenant le tout dans notre fichier index.php :

<?php $request = $_SERVER[&#39;REQUEST_URI&#39;];$viewDir = &#39;/views/&#39;;switch ($request) {
    case &#39;&#39;:
    case &#39;/&#39;:
        require __DIR__ . $viewDir . &#39;home.php&#39;;
        break;

    case &#39;/views/users&#39;:
        require __DIR__ . $viewDir . &#39;users.php&#39;;
        break;

    case &#39;/contact&#39;:
        require __DIR__ . $viewDir . &#39;contact.php&#39;;
        break;

    default:
        http_response_code(404);
        require __DIR__ . $viewDir . &#39;404.php&#39;;}

Comme vous le savez déjà, nous commençons par stocker une requête utilisateur dans la variable $request, puis nous l'utilisons dans l'instruction switch. Par souci de code propre, j'ai créé une variable pour contenir le nom du répertoire de vue.

Vous remarquerez également deux autres choses :

  • Les deux '' et '/' sont utilisés pour faire correspondre site.com ainsi que site.com/ lorsque les utilisateurs se trouvent à la racine de l'application ou du site Web.
  • Il existe une instruction de cas spécial, par défaut, pour correspondre à tout ce qui ne correspondait pas aux autres cas, c'est-à-dire lorsque l'itinéraire est inconnu.

Ajoutons maintenant des données factices dans nos vues.

Ajoutez des données factices dans les fichiers de vues

Nous avons déjà créé tous les fichiers dans le répertoire vues. Passons simplement à ce répertoire et ajoutons du contenu dans chaque fichier.

Mettez simplement du contenu dans chaque fichier :

<h1 id="Home">Home</h1><p>Welcome in my app.</p>
<h1 id="Users">Users</h1><p>List of our users.</p>
<h1 id="Conct-us">Conct us</h1><p>Getting in touch is easy. Just email us</p>
<h1 id="">404</h1><p>You've reached the end of Internet.</p>

Comme vous pouvez le voir , chaque fichier contient juste un titre et un paragraphe. N'hésitez pas à ajouter le contenu de votre choix et à tester le routeur.

Réflexions finales

Dans ce didacticiel, vous avez appris à créer un système de routage de base à partir de zéro, notamment :

  • Comment créer un fichier nommé index.php à la racine du projet. Il s'agit du routeur de votre application.
  • Comment rediriger toutes les requêtes entrantes vers le routeur. Vous faites cela dans le fichier de configuration de votre serveur.
  • Comment créer le système de routage avec une instruction switch dans le routeur.

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!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
PHP et Python: différents paradigmes expliquésPHP et Python: différents paradigmes expliquésApr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP et Python: une plongée profonde dans leur histoirePHP et Python: une plongée profonde dans leur histoireApr 18, 2025 am 12:25 AM

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

Choisir entre PHP et Python: un guideChoisir entre PHP et Python: un guideApr 18, 2025 am 12:24 AM

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP et frameworks: moderniser la languePHP et frameworks: moderniser la langueApr 18, 2025 am 12:14 AM

PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

Impact de PHP: développement Web et au-delàImpact de PHP: développement Web et au-delàApr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Apr 17, 2025 am 12:24 AM

Dans PHP, utilisez le mot-clé Clone pour créer une copie de l'objet et personnalisez le comportement de clonage via la méthode de magie du clone \ _ \ _. 1. Utilisez le mot-clé Clone pour faire une copie peu profonde, en clonant les propriétés de l'objet mais pas aux propriétés de l'objet. 2. La méthode du clone \ _ \ _ peut copier profondément les objets imbriqués pour éviter les problèmes de copie superficiels. 3. Faites attention pour éviter les références circulaires et les problèmes de performance dans le clonage et optimiser les opérations de clonage pour améliorer l'efficacité.

PHP vs Python: cas d'utilisation et applicationsPHP vs Python: cas d'utilisation et applicationsApr 17, 2025 am 12:23 AM

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.