当前位置: 首页 > 后端技术 > PHP

自己写一个PHP框架(一)

时间:2023-03-29 17:46:10 PHP

作者:TerryGao作为高级入门PHPCoder,自己写一个MVC框架可以从各个方面巩固和加深对PHP的理解,也可以了解一些架构基础知识。一、什么是MVCMVC(Model-View-Controller,模型-视图-控制器)是PHP最常见的开发模式。它将程序分为三层。最上层是直接面向最终用户的“视图层”(View)。它负责为用户提供操作界面,是程序的外壳。最底层是核心的“模型层”(Model),负责检索、组织和处理程序所需的数据或信息。中间层是“控制层”(Controller),负责根据用户从“视图层”输入的指令选择“模型层”中的数据,然后根据其执行相应的操作业务逻辑,并生成最终结果。2.起始文件结构如下。www目录将用作网站的根目录。可以在Apache或Nginx的vhost配置中指定www为DocumentRoot,将核心代码放在根目录之外,这样用户就无法直接访问到核心代码。整个站点的安全性。3、入口由于www是根目录,所以www下的index.php可以作为整个站点的入口。当然你也可以继续在www下写usercenter.php、admin.php等作为其他模块的入口。只是制定规则。作为入口点,由于它可以接收所有发送给它的数据,它可以根据框架制定的路由规则分发和处理数据。所以在入口处,需要引入一个initializer,然后进行路由分发。/*nova/www/index.php*/跑步();初始化过程涉及自动加载类和Session处理,这两部分我们稍后会介绍。先说核心处理程序吧,我把路由分发逻辑放在这里。5.核心处理器/*Nova/Framework/Core.php*/setReporting();$this->路线();}/***设置整个站点的报错级别*/publicfunctionsetReporting(){if(DEBUG_MODE===true){error_reporting(E_ALL);ini_set('display_errors','On');}else{error_reporting(E_ALL);ini_set('display_errors','Off');ini_set('log_errors','On');ini_set('error_log',LOG_DIR.'error.log');}}/***路由规则**使用$_REQUEST['act']定位控制器的类*使用$_REQUEST['st']定位具体方法*/publicfunctionroute(){//If$_REQUEST中没有'act',设置默认act为indexif(!isset($_REQUEST['act'])){$_REQUEST['act']='index';}//如果$_REQUEST中没有'st',则设置默认行为为主if(!isset($_REQUEST['st'])){$_REQUEST['st']='main';}//根据act$className='Nova\\Application\\Controllers\\'定位控制器类。$_REQUEST['行动'];//判断controller类是否存在,不存在则报404if(!class_exists($className)){header('HTTP/1.1404NotFound');死($类名);}//生成目标控制器类对象$obj=new$className();//判断方法是否存在然后报404if(!method_exists($obj,$_REQUEST['st'])){header('HTTP/1.1404NotFound');出口;}//执行目标方法$obj->$_REQUEST['st']();你可以在Github上查看Nova项目的源代码。如果有任何问题或建议,可以扫描下方二维码或微信搜索【phpjiagushier】,关注我的微信公众号[PHP架构],与我互动。