Heim  >  Artikel  >  Backend-Entwicklung  >  Es ist super einfach, ein eigenes PHP-Framework zu entwickeln. Es ist überhaupt nicht schwierig!

Es ist super einfach, ein eigenes PHP-Framework zu entwickeln. Es ist überhaupt nicht schwierig!

卡哇伊
卡哇伊nach vorne
2020-07-16 17:00:343763Durchsuche

Es ist super einfach, ein eigenes PHP-Framework zu entwickeln. Es ist überhaupt nicht schwierig!

Ausgangspunkt: Ich persönlich verstehe, dass die Entwicklung eines eigenen Frameworks auch eine Möglichkeit ist, Natürlichkeit zu üben. Nachdem Sie es geschrieben haben, wird es viel einfacher sein, sich andere Frameworks anzusehen. Wenn Sie auf ein Framework stoßen, das keine oder nur sehr wenige Dokumentationen enthält, können Sie dieser Idee folgen und sie hinzufügen. Oder bringen Sie einfach die native Version mit und machen Sie es. Als ich zum ersten Mal mit yii2 in Kontakt kam, hatte ich im Grunde keine Zeit, die Dokumentation zu lesen ​​von yii2....

Eine minimalistische Idee zum Schreiben eines Frameworks:

Parameter empfangen und drucken . Beispielsweise basiert die Methode zum Abrufen der Konfigurationsdatei auf den übergebenen Parametern.

1. Im Allgemeinen wird zunächst festgestellt, ob die Datei vorhanden ist. Wenn es existiert, sollte es enthalten sein, und wenn es neu sein sollte, sollte es neu sein. Speichern Sie es dann in Attributen (Caching)

2. Hauptsächlich der aufrufende Prozess: Fügen Sie alles in die Ausführungsmethode ein

Detaillierte Ideen :

1. Schreiben Sie die Eintragsdatei (Schritte 2-5 sind alle in der Eintragsdatei geschrieben)

2. Definieren Sie Konstanten (das sind Verzeichnisse auf jeder Ebene des Frameworks, damit Sie nicht jedes Mal eine lange Liste schreiben müssen)

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

3. Einführung der Funktionsbibliothek

//加载公共方法
//加载核心文件

4 Laden

Bestimmen Sie, ob die zu ladende Klasse existiert. Tipp: Es wurde im Attribut gespeichert. Tatsächlich wird es anhand dieses Attributs beurteilt.

Gibt true zurück, wenn es existiert; wenn

nicht existiert, laden Sie es. Tipp: Ersetzen Sie den Backslash

Wenn Sie eine Datei laden möchten, fügen Sie sie einfach ein. Hinweis: Diese Datei wird im Stammverzeichnis gefunden

Wenn nicht, wird false zurückgegeben

Hinweis: Erstellen Sie nach dem Schreiben das lib-Verzeichnis und führen Sie das Routing ein Klasse. Test

5. Startup-Framework

6. Routenanalyse-Trilogie

6.1 🎜>

6.2. Rufen Sie die Parameter der URL ab.

Falls vorhanden, analysieren Sie sie.

Konvertieren Sie sie unter normalen Umständen zuerst in das Array (zur Vereinfachung der Verarbeitung) und überprüfen Sie die Abweichung Situation (z. B.: nur in URL Der Controller wurde eingegeben und es gibt keine Eingabemethode. Geben Sie der Methode einen Standardwert)

Zusätzliche Parameter für die URL

Normale Situation

Abnormale Situation, er hat eingegeben Es ist eine ungerade Zahl

Es gibt keinen Standardwert

6.3 Geben Sie den entsprechenden Controller und die entsprechende Methode zurück (tatsächlich wird er im Attribut in 6.2 gespeichert). , der als zurückgegeben betrachtet wird)

7. Laden Sie den Controller

Laden Sie bei run() den Controller

und buchstabieren Sie den von analysierten Controllernamen die Route in den Pfad der Controller-Datei.

Stellen Sie fest, ob die Controller-Datei vorhanden ist. Wenn sie vorhanden ist, ist sie neu. Wenn es nicht vorhanden ist, wird ein Fehler ausgegeben

Hinweis: Das Konzept des Moduls wird hier vorgestellt. Eine App ist ein Modul, keine Anwendung, und ist eine Ebene weniger als ein ausgereiftes Framework

8. Ergebnisse zurückgeben

Führen Sie es aus und probieren Sie es aus. Tatsächlich ist zu diesem Zeitpunkt ein Framework zum Erstellen einer Datei fertiggestellt. Der nächste Schritt besteht darin, es zu erweitern Framework

9. Verbinden Sie die Modellklasse im Controller

Erstellen Sie eine Modellklasse in lib, um eine Verbindung zur Datenbank herzustellen

Erstellen Sie eine neue Modellklasse im Controller und schreiben Sie SQL, um die Datenbank zu betreiben

10 Mittlere Schreibansichtsklasse

Zuweisungs- und Anzeigemethoden werden in der Initialisierung geschrieben (core/init.php) Klasse. Hinweis: Weisen Sie zuerst den Wert zu, fügen Sie dann die Vorlagendatei ein

und dann erbt der Controller diese Klasse und ruft sie auf.

11. Konfigurationsklasse schreiben

Neue Konfigurationsdateiklasse erstellen

Methode zum Schreiben einer einzelnen Konfigurationsdatei (

Tipp: Da sie diese erhalten, ist die Übergabe von Parametern unerlässlich. 2 Parameter, Konfigurationselemente, Name der Konfigurationsdatei. Drucken Sie die Parameter aus und denken Sie dann

)

//调用核心文件中的run方法(我的核心文件是core/init.php)
Schreiben Sie eine Methode zum Abrufen aller Konfigurationsdateien

Tipps: Erstellen Sie ein neues Konfigurationsdateiverzeichnis, um verschiedene Konfigurationsdateien (z. B. Datenbank) zu speichern , Routing Ja, Protokoll...)

Test: Die Konfigurationsdatei funktioniert nicht richtig

12. Protokollklasse schreiben

            //1、判断配置文件是否存在,存在就include
            //2、判断配置项是否存在,存在直接给缓存到属性中
            //3、判断属性中有无缓存,有就直接返回属性中存的
Protokoll erstellen Klasse

Erstellen Sie das Treiberverzeichnis

Erstellen Sie die Protokollkonfigurationsdatei

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

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

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

"symfony/var-dumper":"*"//更帅气变量输出的效果
ymfony/var-umper":"*"//更帅气变量输出的效果

第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教程

Das obige ist der detaillierte Inhalt vonEs ist super einfach, ein eigenes PHP-Framework zu entwickeln. Es ist überhaupt nicht schwierig!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen