手机版

用Composer构建自己的PHP框架的MVC设计

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

回顾

在前面的教程中,我们使用Composer包coding bean/macau构建了两条简单的路线。第一个响应GET操,另一个保存所有请求。其实对于PHP框架来说,路由什么都有。因此,我们接下来需要做的是使MFFC框架更加标准化、更加全面。

这就涉及到PHP框架的附加价值:为“多人协作”建立开发规范,利用ORM、模板引擎等工具“提高开发效率”。

正式开始规划文件夹

新建一个MFFC/app文件夹,在app中创建控制器、模型、视图三个文件夹,正式踏上MVC之旅。

(谁说我抄袭了Laravel,我抄袭了Rails :-D)

使用命名空间

创建一个新的控制器/BaseController.php文件:

?PHP/* * * base controller */class base controller { public function _ _ construct(){ } }创建一个新的控制器/HomeController.php文件:

?PHP/* * * \ homecontroller */class homecontroller扩展基础控制器{public function home () {echo 'h1控制器成功!/h1 ';}}添加路由:macaw:get(','[email protected]');`,打开浏览器直接访问http://127.0.0.1:81/`,出现如下提示:

致命错误:在/library/web server/documents/wwwroot/mffc/vendor/coding bean/Macao/Macao . phplonline 93中找不到类“homecontroller”为什么没有找到HomeController类?因为我们没有让他自动加载,所以将composer.json修改为:

{ ' require ' : { ' coding bean/macau ' : ' dev-master ' },' autoload ' : { ' class map ' :[' app/controller ',' app/models']}}运行composer dump-autoload `,

恭喜,命名空间已成功使用!

连接到数据库

用以下内容创建一个新的models/Article.php文件(请自行更改数据库密码):

?PHP/* * * Article Model */class Article { public static function first(){ $ connect=MySQL _ connect(' localhost ',' root ',' password ');if(!$connection) { die('无法连接: '。MySQL _ error());} mysql_set_charset('UTF8 ',$ connection);mysql_select_db('mffc ',$ connection);$ result=MySQL _ query(' SELECT * FROM articles limit 0,1 ');if($ row=MySQL _ fetch _ array($ result)){ echo ' h1 '。$row['title']。/h1 ';回声“p”。$row['content']。/p ';} MySQL _ close($ connection);}}修改controller/Homecontroller . PHP文件:

?PHP/* * * \ HomeController */class HomeController扩展了base controller { public function home(){ article : first();}}刷新,此时我们会得到没有找到Article类的信息,因为我们没有更新自动加载配置:

Composer dump-autoload在等待的时候,我们建立数据库mffc `,在里面建立表格文章`,设计标题`和`内容两个字段来记录信息和填写至少一条数据。还可以在mffc数据库建立后运行以下SQL语句:

如果存在“文章”,则删除表格;CREATE TABLE ` articles `(` id ` int(11)无符号NOT NULL AUTO_INCREMENT,` title` varchar(255) DEFAULT NULL,` content` longtext,PRIMARY KEY(` id `))ENGINE=InnoDB DEFAULT CHARSET=utf8;锁表`文章`写;/*!40000 ALTER TABLE ` articles ` DISABLE KEYs */;插入成` articles ` (` id `、` title `、` content `)值(1、‘我是标题’,‘H3我是内容~~/h3p我是真的内容,不信,哼~ O(_)O/p’),(。/*!40000 ALTER TABLE ` articles ` ENable Keys */;解锁表格;然后,刷新!您将看到以下页面:

恭喜你!MVC中的m和C已经实现了!接下来,我们开始调用v(视图)。

呼叫视图

将模型/Article.php修改为:

?PHP/* * * Article Model */class Article { public static function first(){ $ connect=MySQL _ connect(' localhost ',' root ',' c4f 075 C4 ');if(!$connection) { die('无法连接: '。MySQL _ error());} mysql_set_charset('UTF8 ',$ connection);mysql_select_db('mffc ',$ connection);$ result=MySQL _ query(' SELECT * FROM articles limit 0,1 ');if($ row=MySQL _ fetch _ array($ result)){ return $ row;} MySQL _ close($ connection);}}返回一个包含查询结果的数组。修改家庭控制器:

?PHP/* * * \ HomeController */class HomeController扩展了base controller { public function home(){ $ article=article : first();需要dirname(__FILE__)。'/./view/home . PHP ';}}保存并刷新,会得到和上面一样的页面,视图调用成功!

几乎每个人都是通过学习某个框架来理解MVC的,这样框架可能会很熟悉。一旦脱离框架,一个简单的页面就写不出来,更不用说设计MVC架构了。其实里面没有那么多门道,原理也很清楚。让我谈谈我的感受:

1.PHP框架很牛逼,也是PHP,也要遵循PHP的运行原理和基本哲学。抓住这一点,我们可以很容易地理解很多事情。

2.从逻辑上讲,PHP做的网站和PHP test.php没什么区别,只是一个字符串作为参数传递给PHP解释器。只是复杂的网站会根据URL调用需要运行的文件和代码,然后返回相应的结果。

3.无论我们看到的是CodeIgniter等180个文件组成的“小框架”,还是Laravel等厂商的3700多个文件组成的“大框架”,在每个URL的驱动下,他们都会组装一个运行的字符串传递给PHP解释器,然后将PHP解释器返回的字符串传递给访问者的浏览器。

4.MVC是一种逻辑架构,本质上是为了让一台像人脑一样拥有超低RAM的计算机能够生产出RAM远超人脑的大规模软件。其实在GUI软件出现之前就已经形成了MVC架构,命令行输出也是视图。

5.在MFFC,URL驱动的框架基本上是这样做的:入口文件需要控制器,控制器需要模型,模型与数据库交互以将数据返回给控制器,控制器再次需要视图,将数据填充到视图中并返回给访问者,过程结束。

版权声明:用Composer构建自己的PHP框架的MVC设计是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。