C'est super simple de développer votre propre framework PHP. Ce n'est pas difficile du tout !

卡哇伊
Libérer: 2023-04-09 08:50:01
avant
3838 Les gens l'ont consulté

C'est super simple de développer votre propre framework PHP. Ce n'est pas difficile du tout !

Point de départ : je comprends personnellement que développer son propre framework est aussi un moyen d'exercer son caractère natif. Après l'avoir écrit, il sera beaucoup plus facile de regarder d'autres frameworks. Si vous rencontrez un framework qui n'a pas de documentation ou très peu de documentation, vous pouvez suivre cette idée et l'ajouter. Ou apportez simplement le natif et faites-le. C'était le cas lorsque je suis entré en contact avec yii2, j'ai commencé à travailler sans même avoir le temps de lire la documentation. C'était fondamentalement purement natif et j'utilisais le csrf et le double langage. ​​de yii2....

Une idée minimaliste pour écrire un framework :

Réception et impression des paramètres . Par exemple, la méthode d'obtention du fichier de configuration est basée sur les paramètres transmis.

1. Généralement, il est d'abord déterminé si le fichier existe. S'il existe, il doit être inclus, et s'il doit être nouveau, il doit être nouveau. Enregistrez-le ensuite dans les attributs (mise en cache)

2. Principalement le processus d'appel : mettez tout dans la méthode run

Idées détaillées :

1. Écrivez le fichier d'entrée (les étapes 2 à 5 sont toutes écrites dans le fichier d'entrée)

2. Définissez des constantes (qui sont des répertoires à chaque niveau du framework, vous n'avez donc pas besoin d'écrire une longue liste à chaque fois)

//定义框架根目录
//定义核心文件目录路径
//应用目录(包含控制器、模型等)
//是否开启调试
//如果DEBUG为true,将错误显示打开。否则不显示
Copier après la connexion

3. Introduction de la bibliothèque de fonctions

//加载公共方法
//加载核心文件
Copier après la connexion

4. chargement

Déterminez si la classe à charger existe. Astuce : Il a été enregistré dans l'attribut. En fait, il est jugé par cet attribut.

Renvoie vrai s'il existe ; si

n'existe pas, chargez-le. Astuce : Remplacez la barre oblique inverse

Si vous souhaitez charger un fichier, incluez-le simplement. Remarque : Ce fichier se trouve dans le répertoire racine

Sinon, il renvoie false

Remarque : Après l'écriture, créez le répertoire lib et introduisez le routage classe. Test

5. Framework de démarrage

//调用核心文件中的run方法(我的核心文件是core/init.php)
Copier après la connexion

6. Trilogie d'analyse d'itinéraire

6.1. 🎜>

6.2. Obtenez les paramètres de l'url

S'il existe, analysez

Dans des circonstances normales, convertissez-le d'abord en tableau (pour faciliter le traitement) et vérifiez l'anomalie situation (telle que : uniquement dans l'url Le contrôleur a été saisi et il n'y a pas de méthode de saisie. Donnez à la méthode une valeur par défaut)

Paramètres supplémentaires sur l'url

Situation normale

Situation anormale, il est entré C'est un nombre impair

Il n'y a pas de valeur par défaut

6.3 Renvoie le contrôleur et la méthode correspondants (en fait, il est enregistré dans l'attribut en 6.2. , qui est considéré comme renvoyé)

7. Chargez le contrôleur

Lorsque run(), chargez le contrôleur

et épelez le nom du contrôleur analysé par l'itinéraire vers le chemin du fichier du contrôleur.

Déterminez si le fichier du contrôleur existe. S'il existe, il sera nouveau. S'il n'existe pas, une erreur sera générée

Remarque : Le concept de module est introduit ici. Une application est un module, pas une application, et constitue une couche de moins qu'un framework mature

8. Renvoyez les résultats

Exécutez-le et essayez-le. En fait, à ce stade, un cadre de création d'un fichier est terminé. framework

9. Connectez la classe modèle dans le contrôleur

Créez une classe modèle dans lib pour la connexion à la base de données

Créez une nouvelle classe modèle dans le contrôleur et écrivez SQL pour faire fonctionner la base de données

10. Écriture moyenne de la classe View

les méthodes d'affectation et d'affichage sont écrites dans l'initialisation (core/init.php) classe.

Remarque : attribuez d'abord la valeur, puis incluez le fichier modèle

, puis le contrôleur

hérite de cette classe et l'appelle.

11. Écrire une classe de configuration

Créer une nouvelle classe de fichier de configuration

Méthode d'écriture d'un seul fichier de configuration ( Astuce : Puisqu'ils l'obtiennent, le passage des paramètres est indispensable. 2 paramètres, éléments de configuration, nom du fichier de configuration. Imprimez les paramètres, puis concevez )

            //1、判断配置文件是否存在,存在就include
            //2、判断配置项是否存在,存在直接给缓存到属性中
            //3、判断属性中有无缓存,有就直接返回属性中存的
Copier après la connexion

Écrivez une méthode pour obtenir tous les fichiers de configuration

Conseils : Créez un nouveau répertoire de fichiers de configuration pour stocker divers fichiers de configuration (tels que la base de données , routage Oui, journal...)

Test : le fichier de configuration ne fonctionne pas bien

12. Ecrire la classe de journal

/**
 * 提示:用的是工厂模式的思想:
 * 1、读取配置文件,获取当前驱动。在初始化方法中new类
 * 2、在log方法中,调用不同驱动中的log方法
 */
Copier après la connexion

Créer un journal. class

Créer le répertoire des pilotes

Créer le fichier de configuration du journal

13、使用composer:编写json文件,自己的框架上到github上供人家使用

第1个类库报错的地址:https://github.com/filp/whoops

第2个类库酷炫的打印变量:"s

"symfony/var-dumper":"*"//更帅气变量输出的效果
ymfony/var-umper":"*"//更帅气变量输出的效果
Copier après la connexion

第3个类库数据库的地址:http://medoo.lvtao.net/1.2/doc.php

第4个类库模板引擎的地址:https://twig.symfony.com/doc/2.x/intro.html#installation

镜像网址:https://pkg.phpcomposer.com/

注意:下图很重要

14、使用medoo数据库类

如果自己封装pdo可能会有什么想象不到的漏洞,这样我们就不如直接用现成的类库加载

http://medoo.lvtao.net/

思路:先将原来继承的pdo换成该类库,在封装模型控制器调用

15、模板引擎类库

思路:修改display方法,改成类库的,还有模板布局

剩下其余的扩展就因人而异了,想不到的话,可能去参考成熟的框架

这里写2个封装好的方法

封装post接收方法(给大家做参考思路)

封装跳转方法

更多教程:《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!

Étiquettes associées:
source:csdn.net
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!