Maison > développement back-end > tutoriel php > Comment créer un système de routage pour une application PHP à partir de zéro

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

PHP中文网
Libérer: 2024-11-29 16:23:53
avant
284 Les gens l'ont consulté

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
Copier après la connexion
  • .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
Copier après la connexion
  • 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]
Copier après la connexion

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}
Copier après la connexion

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'];
Copier après la connexion

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';}
Copier après la connexion

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;;}
Copier après la connexion

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>Home</h1><p>Welcome in my app.</p>
Copier après la connexion
<h1>Users</h1><p>List of our users.</p>
Copier après la connexion
<h1>Conct us</h1><p>Getting in touch is easy. Just email us</p>
Copier après la connexion
<h1>404</h1><p>You've reached the end of Internet.</p>
Copier après la connexion

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!

Étiquettes associées:
php
source:freecodecamp.org
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal