18577975379 在线客服 联系我们 返回顶部
企业动态 技术分享 行业动态

PHP开发一个属于自己MVC框架

2020-06-07

想了解PHP-MVC框架的原理和实现方式是什么?在这里,我们用PHP开发一个自己的MVC框架。小巧精悍。深入理解市面上PHP主流的MVC框架原理。唯一入口文件该干什么,如何自动载入。本章代码基于PHP5.3+,采用命名空间。

(2)、Config是配置文件所在目录,UniverseInvincibleFrameWork是框架核心文件所在目录

(5)、UniverseInvincibleFrameWork目录下是核心框架入口类、自动载入类、路由类已经数据库文件所在的DB目录

1)、采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一的入口。

1)、谁也不会傻呼呼的到把数据库链接信息等配置信息写死到代码里,那么就必须有一个配置文件。它定义系统常量,包括但不限于项目名称、数据库账号密码,默认应用名称/控制器/方法名等

2)、配置文件还有个好处,定义生长环境、测试环境、开发环境等不同的参数,可以根据来访域名、所在机器IP等信息来使自动选择加载不同的系统和数据库配置。

2)、我们用spl_autoload_register()。从PHP5.1.2引入。摒弃了__autoload()。它的优势是一个项目可以有多个spl_autoload_register()函数。使得项目框架、各种插件(LaneWeChat、PHPMailer、PHPEXCEL等)不会相互冲突

2)、所有的URL,都会去执行index.php。然后路由的作用的是根据不同的URL,来执行不同的Controller。

$pathInfo = !empty($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : array();

$className = !empty($pathInfo[2]) ? $pathInfo[2] : getConfig('DEFAULT_CONTROLLER');

$methodName = !empty($pathInfo[3]) ? $pathInfo[3] : getConfig('DEFAULT_METHOD');

1)、大型项目中,我们会用到Mysql、Redis等多种数据库。甚至前期是ACCESS,后期是Mysql/Oracle/SQL SERVER,在切换数据库的过程中,只需要修改一个常量而不需要修改代码。

3)、项目中的Model文件,继承Model类。该类定义了常用的数据库操作,是所有数据库的抽象类。如增删改查和自定义SQL等。该类使用数据工厂中返回的示例,来操作具体的数据库类。

$this-_conn = mysqli_connect($dbConfig['DB_HOST'], $dbConfig['DB_USERNAME'], $dbConfig['DB_PASSWORD'], $dbConfig['DB_NAME'], $dbConfig['DB_PORT']);

5)、补充一点。我们有一个接口类,为了约定各个数据库的实例类的规范,他们都要实现几个关键方法。

1、我们在项目Home中,进行测试。编写两个Model文件。第一个是Home/Model/IndexModel.php 来查询默认数据库的Mysql 版本。第二个是Home/ Model / TestModel.php。来查询数据库2的所有表的名字。

2、写一个Server文件。Home/Server/IndexServer.php来调用刚才写的两个Model文件并返回

echo 'PHP版本:' . $versionList['php_version'].'。Mysql版本:' . $versionList['mysql_version'];

1)、浏览器运行http://framework/index.php/Home/Index/index。正常输出:“hello world”

2)、浏览器运行http://framework/index.php/Home/Index/test。正常输出:“hello 360”

3)、浏览器运行http://framework/index.php/Home/Index/getVersion。正常输出:“PHP版本:5.5.27。Mysql版本:5.6.17”

4)、浏览器运行http://framework/index.php/Home/Index/getTables。正常输出数据库2的所有表名

在线咨询
  • Copyright © 2013-2020 南宁华寇网络科技有限公司
  • 技术支持: