• 超简单开发自己的php框架一点都不难


    (转)https://blog.csdn.net/qq_33862644/article/details/79344331

    写框架的极简思路:

    接收,打印参数想怎么弄。如 获取配置文件的方法,根据传过来的参数 构想

    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接收方法(给大家做参考思路)

    封装跳转方法

  • 相关阅读:
    java中的上转型对象
    java工程项目里,在一个包里面,不能出现同名的类名,这问题是刚接触java才会遇到的,特别是新手一般都没有建立包,而是使用默认的,易出现同名的类名,导致eclipse提示错误
    接口作为参数,不同的接口调用不同的方法,例如:输出“I love Game”或输出“我喜欢游戏”
    JavaScript--原型链
    JavaScript--clientX,clientY、pageX,pageY、offsetLeft,offsetTop/offsetWidth,offsetHeight、scrollLeft,scrollTop/scrollWidth,scrollHeight、clientHeight,clientWidth区别
    JavaScript--结合CSS变形、缩放能拖拽的登录框
    JavaScript--放大镜
    JavaScript--返回顶部方法:锚链接、行内式js写法、外链式、内嵌式
    JavaScript--封装好的运动函数+旋转木马例子
    JavaScript--漏写var却还能使用标签
  • 原文地址:https://www.cnblogs.com/alexguoyihao/p/9259246.html
Copyright © 2020-2023  润新知