Cet article va vous apprendre comment créer votre propre framework web en utilisant PHP en une minute ? (Partage) a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela sera utile à tout le monde.
Le WEB mentionné ici fait référence au programme PHP WEB fonctionnant sous apache.
Tout d'abord, vous devez comprendre le mécanisme de fonctionnement de PHP sous Apache et le cycle de vie des requêtes.
PHP est un langage de script. Son processus d'exécution s'étend de l'entrée du fichier jusqu'à la fin du fichier. Il peut contenir ou faire référence à d'autres fichiers et est orienté processus. Au cours du processus, les objets peuvent être utilisés pour mettre en œuvre divers traitements logiques requis. Vous pouvez utiliser un ou plusieurs objets pour remplir les fonctions requises, et vous pouvez également indiquer à un objet quelle fonction vous souhaitez remplir. Il s'agit d'une méthode de développement orientée objet et d'une méthode de développement courante. Par conséquent, dans le mécanisme d'exploitation orienté processus, utilisez la méthode de développement orientée objet.
Le cycle de vie de chaque requête HTTP commence également depuis l'entrée jusqu'à la fin du programme. Les variables qu'il contient n'existeront plus. Les variables des différentes requêtes HTTP sont indépendantes et ne s'affectent pas. Nous pouvons utiliser des déclarations globales, des variables de tableau globales $GLOBALS et des variables statiques statiques pour partager des données dans la même requête HTTP ; utiliser la session pour réaliser un partage au niveau de la session ; utiliser le cache pour réaliser un partage de données à l'échelle du site. L'instruction globale est généralement utilisée dans les méthodes et dans le développement orienté processus et n'est généralement pas utilisée. $GLOBALS et static sont souvent utilisés, mais ils ne peuvent pas être utilisés directement. Ils sont gérés dans des objets ou des méthodes spéciales. Par exemple, le mode singleton couramment utilisé est enregistré en utilisant $GLOBALS et static.
Dans les programmes PHP, nous envisagerons de rendre le framework aussi simple, efficace, clair et facile à utiliser que possible, ce qui est bénéfique pour le développement et la maintenance.
Le modèle de programme de base utilise le modèle MVC, qui est superposé et divisé en modules. En même temps, un routeur URL utile est requis pour coopérer avec MVC.
Routeur d'URL : Un composant très critique qui détermine la structure organisationnelle du fichier de code source et la clarté du code. Un bon routeur peut facilement trouver l’entrée logique, reflétant la facilité d’utilisation du framework.
Modèle : Utilisez toujours des tableaux. Le principal problème lors de l'utilisation de tableaux est que le contenu du tableau n'est pas clair. Dans le projet, les attributs font référence aux champs de la base de données, de sorte que le contenu du tableau est relativement clair. Les opérations du modèle sont encapsulées à l'aide de la couche d'accès aux données DAO. Dans l'accès aux bases de données, il est également plus efficace de convertir directement sous forme de tableau. Pour les objets de données interactifs d'autres systèmes, il existe généralement des définitions de documents d'interface. Concernant la technologie Active Record dans ORM, il vaut mieux ne pas l'utiliser ou pas.
Vue : J'ai commencé à utiliser smarty, mais dans le rapport de performances, la méthode exécutée par smarty prenait trop de temps. Plus tard, j'ai utilisé tmd_tpl, qui n'est qu'un seul fichier, facile à utiliser. et efficace. Facile à modifier. Dans le modèle de vue, combinez la syntaxe PHP et complétez-la avec des variables de modèle. L'idée de MVC est la séparation, ce qui ne signifie pas que la syntaxe PHP ne peut pas être utilisée dans View. S'il s'agit d'une interface API, les données peuvent être directement converties dans un résultat au format spécifique et renvoyées.
Contrôleur : ou action représente un comportement, une méthode et une interface. Une seule couche de contrôleur ne suffit souvent pas. Elle est généralement divisée en une couche d'interface, une couche métier, une couche d'accès aux données et une couche de communication. L'interface est responsable de la vérification des paramètres, du contrôle des autorisations d'accès, de l'appel de services spécifiques et enfin du renvoi des données ou de l'affichage des pages, etc. Il est préférable que toutes les entreprises commencent par la couche d'interface. Avant cela, nous ne devrions faire que des choses de cadre. Lorsque nous avons besoin de lire une certaine implémentation commerciale, nous n'avons besoin que de commencer à lire à l'entrée de la couche d'interface. La couche métier exécute des fonctions métier réelles. La couche métier obtient des données de la couche d'accès aux données et effectue le traitement métier. La couche d'accès aux données obtient les données de la base de données ou de l'interface d'appel et peut effectuer un traitement de conversion de données simple. Si PHP est uniquement utilisé comme frontal d'affichage de données et que le back-end est exécuté par C/C++/GO, etc., il vous suffit alors d'encapsuler la couche métier, de demander les données au back-end dans le couche métier, puis renvoyez-la à la couche d'interface.
Ce qui précède est la structure de base du programme, ou la structure des processus de l'entreprise, qui est généralement la partie la plus importante du système. Mais c'est encore loin d'être pratique, et il reste encore de nombreuses fonctions de base à ajouter, comme le traitement des sessions, l'accès aux bases de données, le traitement des journaux et d'autres fonctions. Ces fonctions de base sont généralement indépendantes du framework et peuvent être appliquées sur différents frameworks. Les classes fonctionnelles ne doivent pas être trop étroitement couplées au framework et utilisent généralement des méthodes de combinaison. Nous encapsulons ces fonctions de base dans des classes principales d'une manière facile à utiliser, et utilisons une ou plusieurs instances pour les appeler, ou encapsulons davantage les classes dans des méthodes globales pour une utilisation facile.
Comme le montre l'image ci-dessus, le centre a une bonne compréhension et une bonne organisation, qui reflètent les capacités de l'entreprise, car à mesure que l'entreprise se développe, une structure commerciale en couches se formera naturellement ; La bonne intégration des périphériques reflète les capacités du framework et la manière de l'utiliser/développer de manière confortable et fluide.
Lors de l'appel de classes fonctionnelles ou de classes métier, des problèmes de chargement ou d'importation de classes seront impliqués. Que diriez-vous d'utiliser la fonction de chargement automatique ? Sur la base de mon expérience personnelle et du niveau de support de l'IDE, je pense que ce n'est pas intuitif et peu convivial pour l'IDE. Par exemple, F3 ne peut pas trouver une méthode définie. C'est notre expérience lors de l'apprentissage des systèmes open source, et cela a également un impact sur les performances. Il est plus pratique d'exiger/inclure directement Bien que cela nécessite d'écrire plus de code, cela apporte une grande commodité au développement, à la maintenance et à la lecture (sauf qu'il n'est pas pratique de changer la référence après avoir modifié le nom, mais elle peut être modifiée via global. recherche). Certaines classes publiques sont référencées globalement dans l'entrée, et les classes commerciales sont référencées à la demande. Une perte de performances ? Étant donné que la plupart du temps, l'entreprise est verticale, require/include peut généralement être utilisé à la place de require_once/include_once. Cela n'a pas d'importance même si vous utilisez quelques fois supplémentaires. Tout d'abord, l'exactitude peut être garantie, ainsi que l'ensemble. la performance du programme n’est pas déterminée par cela. Le chargement automatique ajoutera beaucoup de jugements, d'instructions et d'opérations de pile, et la recherche de fichiers et la perte de performances seront probablement plus importantes. Cependant, une bonne implémentation du chargement automatique peut toujours être envisagée. Les fichiers Business n'utilisent pas le chargement automatique et doivent être simples, positionnés avec précision, efficaces et éviter la duplication.
Comment l'utiliser après le chargement ? Méthode, méthode objet de classe ou appel de méthode statique de classe ? Cela dépend de différents scénarios. Les fonctions globales sont généralement des appels de méthode, comme la méthode C de thinkPHP pour obtenir le contenu de configuration, qui est appelée directement. Si dans la couche, couche d'interface->couche métier->couche d'accès aux données, utilisez l'appel de méthode statique de classe. Certaines opérations fonctionnelles globales, telles que les classes d'opérations de base de données, certaines classes fonctionnelles tierces et les classes fonctionnelles polymorphes, sont généralement utilisées à l'aide de singletons sans qu'il soit nécessaire de générer plusieurs fois de nouveaux objets.
À propos des fonctions de réflexion, des annotations, de l'IOC, de la programmation orientée aspect et d'autres fonctions et pratiques utiles dans d'autres langages, elles peuvent essentiellement être implémentées en PHP Bien que j'aie vu de nombreux exemples pratiques, je n'ai pas envisagé de les appliquer. Dans le projet, pouvoir le mettre en œuvre ne signifie pas qu'il faut l'utiliser. LAMP peut facilement développer un site Web, et il s'agit généralement d'une application de site Web, qui est différente d'un framework (comme Spring). Par conséquent, l'utilisation de PHP est davantage axée sur les processus métier et les performances du site Web, ce qui rend le processus métier. clair. La facilité de maintenance garantit la flexibilité sans compliquer les activités ni compromettre les performances. Les sites Web hautes performances doivent être courts, plats et rapides, sans compter que de nombreux sites Web utilisent PHP pour le rendu frontal et c/c++/java pour le back-end, les sites Web PHP doivent donc être aussi simples que possible. Parce que nous sommes un système de site Web d'entreprise, le processus métier est déterminé et l'exécution se fait du début à la fin. Le code métier reflété dans le code doit être clair. S'il est reflété ou injecté pendant le processus d'exécution, cela affectera la compréhension des gens. de l'entreprise peut également ignorer ce que le framework a fait lors du développement et de la maintenance de la localisation des bogues. Contrairement à certains frameworks généraux ou packages tiers, qui doivent être suffisamment flexibles pour être appelés, la flexibilité est compliquée et une certaine quantité de performances doit être sacrifiée. Pour utiliser ces fonctions, vous devez souvent faire du code d'initialisation ou une initialisation de configuration à l'avance, et chaque requête HTTP doit être exécutée une fois. Même pour les fonctions simples, ce n'est pas nécessaire, contrairement à Java qui ne s'initialise qu'une seule fois. Par exemple, certains cadres de repos définiront des itinéraires à l'entrée, ainsi qu'un grand nombre de configurations, même si cela présente un certain degré de clarté et de flexibilité, dans ce cas il est recommandé d'utiliser l'idée de convention plutôt. configuration.
Certaines des pratiques ci-dessus sont un peu différentes ou extrêmes, mais elles sont également passées par le cadre d'origine --> (fonctionnalités avancées, techniques) --> retour au processus d'origine, qui peut être compris comme sentiments ou expériences personnels uniques. L’utilisation des fonctionnalités de base de PHP facilite le démarrage d’un projet, la compréhension des processus métier, ainsi que son développement et sa maintenance. Il n’y a pas de perte excessive de performances et cela peut également faciliter l’optimisation du positionnement. En bref, la simplicité primitive est la meilleure amélioration en termes de performances ; écrire l'entreprise de manière isolée verticalement et voir ce qui a été fait d'un seul coup d'œil améliore l'efficacité du développement.
Si vous n'avez pas la possibilité de développer votre propre framework PHP selon les exigences du projet au début, alors après avoir utilisé un framework pour la première fois, vous devriez envisager d'implémenter votre propre site Web à la demande dans d'autres projets et former votre propre cadre.
Je pense que le framework de site Web PHP le plus simple et le plus facile à utiliser nécessite une route, un contrôleur et un moteur de modèle de vue. D'autres modules fonctionnels peuvent être ajoutés selon les besoins.
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!