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.
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 :
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.
Avant d'aller de l'avant, voyons à quoi ressemblera le projet comme :
Structure des fichiers
Utilisez les commandes shell ci-dessous pour lancer le projet :
mkdir php-routing & cd php-routingtouch index.php .htaccess
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.
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
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.
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 /
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.
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['REQUEST_URI'];$viewDir = '/views/';switch ($request) { case '': case '/': require __DIR__ . $viewDir . 'home.php'; break; case '/views/users': require __DIR__ . $viewDir . 'users.php'; break; case '/contact': require __DIR__ . $viewDir . 'contact.php'; break; default: http_response_code(404); require __DIR__ . $viewDir . '404.php';}
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 :
Ajoutons maintenant des données factices dans nos 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>
<h1>Users</h1><p>List of our users.</p>
<h1>Conct us</h1><p>Getting in touch is easy. Just email us</p>
<h1>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.
Dans ce didacticiel, vous avez appris à créer un système de routage de base à partir de zéro, notamment :
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!