


Comment 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.
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 :
Structure 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 /
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['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 :
- 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!

TomakePhpApplicationsFaster, suivez lesEsthets: 1) useopCodeCachingLikeOpcachetOsToreprecCompileScriptByteCode.2) MinimizedatabaseQueriesByusingSingQueryCachingAndefficientIndexing.3) Levier

TOIMPROVEPHPAPPLICATIONSPEED, SuivreSesEtsts: 1) Activer le codécachement de la codécaching avec un accumulation de dotation

L'injection de dépendance (DI) améliore considérablement la testabilité du code PHP par des dépendances explicitement transitives. 1) Les classes de découplage en DI et les implémentations spécifiques rendent les tests et la maintenance plus flexibles. 2) Parmi les trois types, le constructeur injecte des dépendances d'expression explicites pour maintenir l'état cohérent. 3) Utilisez des conteneurs DI pour gérer les dépendances complexes pour améliorer la qualité du code et l'efficacité de développement.

DatabaseQueryOptimizationInphpinvolveSeveralStrategieSoenhancePerformance.1) selectOnlyneceSaryColumnStoredatatransfer.2) useIndexingTospeeDupDatareTeval.3) ImplémentQueryCachingTostoreResul

PhpisUsedForsendentemailsDuetOtsBuilt-inmail () function andsupportivelibray likephpmailerandSwiftmailer.1) usethemail () functionforaSicemails, butthaslimitations.2) Employphpmailerfora

Les goulots d'étranglement de performances PHP peuvent être résolus via les étapes suivantes: 1) Utilisez XDebug ou BlackFire pour l'analyse des performances pour découvrir le problème; 2) Optimiser les requêtes de base de données et utiliser des caches, telles que l'APCU; 3) Utilisez des fonctions efficaces telles que Array_Filter pour optimiser les opérations de tableau; 4) Configurer OPCACHE pour ByteCode Cache; 5) Optimiser le frontal, comme la réduction des demandes HTTP et l'optimisation des images; 6) Surveiller et optimiser en continu les performances. Grâce à ces méthodes, les performances des applications PHP peuvent être considérablement améliorées.

Dépendance Injection (DI) InphpisadessignPatterNTHATHATHATHAGE ANDREDUCES CLASSDENDENCES, améliorant la codémodlarité, testabilité et montage.

CachemproveSPhpperFormancedByStoringResultsof computationsorqueriesforquickretrieval, réducingsserverloadAndenHancingResponsetimes.Effectivestrategiesclude: 1) Opcodécache


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Dreamweaver Mac
Outils de développement Web visuel

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP
