我们为什么要自己搭建一个MVC架构的框架?
因为在别的框架中,有些方法我们使用起来可能会比较麻烦,我们可以在自己的框架中写一些自己想用、实用的类或者方法。
我们自己封装一个MVC的框架呢,也可以提高我们的逼格。使自己的价值更高。
那么我们怎么来封装自己的框架呢?
如下图:
入口文件:
入口文件是进入我们框架的一把钥匙,我们要怎么编写我们的入口文件呢?
第一步:定义常量,这里的常量是我们以后会经常用到的路径,以方便我们使用。
第二步:加载函数库,通常情况下我们经常会把使用的函数库放在我们的入口文件中。也是为了方便我使用。
第三步:启动框架,我们把我们的基类也引进来,然后调用基类中的某个方法来实现我们框架的启动。
类的自动加载:
自动加载类:自动加载类可以方便我们不用每次都去加载哪个类。我们直接奔入主题:
第一步:我们在使用自动加载类的时候,应该写到入口文件中去,用spl_autoload_register这个函数来调用我们类中的方法。
第二步:来调用上述我们的那个类,这个类就是我们的基类,那我们在这个类应该怎么去写,
首先,我们在类中定义个静态的数组来存放我们要加载的类文件,当我们第一次访问这个方法的时候我们应该先判断数组中是否存在该文件,如果存在返回true,如果不存在,我们在引入该文件。当我们引入这个类后,把我们引入的类放到数组中去。
路由类:
也许你在刚接触框架的时候会问到:路由是什么鬼?
路由也就是指URL路由,通过解析URL参数找到执行的(控制器的)方法。通过URL,能找到目标类和目标方法。这就是路由的好处
那么我们如何自己写一个路由类,跟着我一步一步走:
第一步:我们应隐藏我们的入口文件,如index.php。首先如何隐藏入口文件。隐藏入口文件其实就类似于伪静态。在根目录下新建一个.htaccess的文件,写上:
<IfModule mod_rewrite.c>
RewriteEngine On
# 确保请求路径不是一个文件名或目录
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
# 重定向所有请求到 index.php?url=PATHNAME
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
这样我们就可隐藏我们的入口文件了。
第二步:要获取我们需要的控制器以及方法。我们通过$_SERVER['REQUEST_URI']这个函数来获取URL地址。我们获取$_SERVER['REQUEST_URI']的第一位是控制器,第二位之方法。如果不存在则访问默认控制器和默认方法,
第三步:还要获得URL的参数部分。我们先获取$_SERVER['REQUEST_URI']的长度。从第二位开始,循环放到一个变量中,每次循环+2。