出发点:我个人理解 自己开发框架也是锻炼原生的一种手段。写完之后看别的框架也方便多了。如果你遇到一个没有文档或文档极少的框架,可以跟着这个思路摸索着补充。或干脆拿着原生上来就是干,我刚接触yii2的时候就是这样,都没来的及看文档就开工了,基本纯原生写的,就用了个yii2的csrf和双语言....
写框架的极简思路:
接收,打印参数想怎么弄。如 获取配置文件的方法,根据传过来的参数 构想
1、一般都是先判断文件是否存在。存在就该include就include,该new就new。然后做存到属性中(做缓存)
2、主要是调用流程:都什么需要放到run方法中
详细思路:
1、写入口文件(2-5步都是写在入口文件中的)
2、定义常量(就是框架的各层级目录,省着每次写一大串)
//定义框架根目录 //定义核心文件目录路径 //应用目录(包含控制器、模型等) //是否开启调试 //如果DEBUG为true,将错误显示打开。否则不显示
3、引入函数库
//加载公共方法 //加载核心文件
4、自动加载
判断要加载的类是否存在。提示:已经存到属性中了,其实拿这个属性判断。
存在返回true;
不存在就加载。提示:反斜线替换
要加载的是文件,就include。注意:这个文件从根目录下找
不是就返回false
注意:写完再建立lib目录,引入路由类。测试
5、启动框架
//调用核心文件中的run方法(我的核心文件是core/init.php)
6、路由解析三部曲
6.1、隐藏入口文件
6.2、获取url的参数
存在,就解析
正常情况,先转数组(方便处理),效验非正常情况(如:只在url上输入了控制器,没有输入方法,给方法个默认值)
处里url上的多余参数
正常情况
非正常情况,他输入的是奇数
不存在给默认值
6.3、返回对应的控制器和方法(其实在6.2中存到属性中,也算是返回了)
7、加载控制器
在run()时就要加载控制器
将路由解析出来的控制器名,拼成控制器文件的路径。
判断控制器文件是否存在,存在就new。不存在就抛出错误
注意:这里引入了模块的概念\app是模块不是应用,比成熟的框架少一层
8、返回结果
跑起来试一试,其实到这步一个建档的框架已经完成了,接下来的是扩展框架
9、在控制器中连接模型类
在lib中建立个model类,用于连接数据库
在控制器中new model类,写sql操作数据库
10、中写视图类
assign和display方法写在初始化(core/init.php)类中。注意:先赋值,后包含模板文件
然后控制器继承该类,进行调用。
11、写配置类
新建配置文件类
写单个配置文件的方法(提示:既然他俩获取,传参是少不了的。2个参数,配置项,配置文件名。打印参数,然后构想)
//1、判断配置文件是否存在,存在就include //2、判断配置项是否存在,存在直接给缓存到属性中 //3、判断属性中有无缓存,有就直接返回属性中存的
写获取所有配置文件的方法
提示: 新建个配置文件目录,用来放各种配置文件(如 数据库的,路由的,日志的....)
测试:配置文件好使不
12、写日志类
/** * 提示:用的是工厂模式的思想: * 1、读取配置文件,获取当前驱动。在初始化方法中new类 * 2、在log方法中,调用不同驱动中的log方法 */
建立日志类
建立驱动目录
建立日志的配置文件
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教程》
Atas ialah kandungan terperinci 超简单开发自己的php框架一点都不难!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

URL panjang, sering berantakan dengan kata kunci dan parameter penjejakan, boleh menghalang pelawat. Skrip pemendekan URL menawarkan penyelesaian, mewujudkan pautan ringkas yang sesuai untuk media sosial dan platform lain. Skrip ini sangat berharga untuk laman web individu a

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Ini adalah bahagian kedua dan terakhir siri untuk membina aplikasi React dengan back-end Laravel. Di bahagian pertama siri ini, kami mencipta API RESTful menggunakan Laravel untuk aplikasi penyenaraian produk asas. Dalam tutorial ini, kita akan menjadi dev

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Tinjauan Landskap PHP 2025 menyiasat trend pembangunan PHP semasa. Ia meneroka penggunaan rangka kerja, kaedah penempatan, dan cabaran, yang bertujuan memberi gambaran kepada pemaju dan perniagaan. Tinjauan ini menjangkakan pertumbuhan dalam PHP Versio moden

Dalam artikel ini, kami akan meneroka sistem pemberitahuan dalam rangka kerja web Laravel. Sistem pemberitahuan di Laravel membolehkan anda menghantar pemberitahuan kepada pengguna melalui saluran yang berbeza. Hari ini, kami akan membincangkan bagaimana anda boleh menghantar pemberitahuan ov


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Dreamweaver Mac版
Alat pembangunan web visual

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
