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

网络营销 2025-04-24 13:54www.168986.cn短视频营销

几乎所有人通过框架学习MVC模式,对框架运用娴熟后,往往缺乏独立设计和应用MVC架构的能力。实际上,MVC的原理并不复杂,只是需要通过适当的方式去理解和实践。

回顾

在之前的教程中,我们使用codingbean/macaw这个Composer包构建了两个简单的路由。路由是PHP框架的核心,有了它,几乎就有了整个框架的骨架。接下来,我们要让MFFC框架更加规范、丰富。

一个完善的PHP框架需要确立开发规范以便于多人协作,使用ORM、模板引擎等工具以提高开发效率。

开始规划文件夹结构

我们在MFFC/app文件夹下创建controllers、models、views三个文件夹,正式开始MVC的旅程。

(有人说我模仿了Laravel,其实我模仿的是Rails的精神。)

使用命名空间

我们新建controllers/BaseController.php文件,定义BaseController类。然后新建controllers/HomeController.php文件,定义HomeController类,并创建一个home方法,用于输出一个简单的提示。

我们增加一条路由Macaw::get('', 'HomeController@home');,然后尝试通过浏览器访问 'HomeController' not found。这是因为我们没有设置自动加载机制。

修改composer.json文件,添加自动加载的类映射路径"app/controllers"和"app/models",然后运行composer dump-autoload命令。稍等片刻后再次刷新页面,你将看到"控制器成功!"的提示。

恭喜你,你已经成功使用了命名空间!接下来,我们可以在controllers、models、views中继续完善MFFC框架,逐步构建出功能丰富、结构清晰的MVC架构。通过不断的学习和实践,你将深入理解MVC的原理,并能够独立完成MVC架构的设计和实现。连接数据库:MVC之旅的第一步

当我们开始一个新的MVC项目时,连接数据库是第一步。在PHP中,我们可以使用MySQL数据库来存储和检索数据。让我们一步步地实现这个过程。

在models目录下新建Article.php文件,文件内容如下(请自行更改数据库密码):

Article Model

class Article {

public static function first() {

$connection = mysql_connect("localhost","root","password"); // 连接数据库

if (!$connection) {

die('Could not connect: ' . mysql_error()); // 如果连接失败,输出错误信息并终止程序运行

}

mysql_set_charset("UTF8", $connection); // 设置字符集为UTF-8,确保支持中文等字符

mysql_select_db("mffc", $connection); // 选择数据库mffc

$result = mysql_query("SELECT FROM articles limit 0,1"); // 查询articles表中的第一条记录

if ($row = mysql_fetch_array($result)) { // 如果查询结果不为空,则输出标题和内容

echo '

'.$row["title"].'

';

echo '

'.$row["content"].'

';

}

mysql_close($connection); // 关闭数据库连接

}

}

?>

接下来,我们需要在controllers目录下的HomeController.php文件中调用这个模型。打开该文件并添加以下代码:

\HomeController\class HomeController extends BaseController {

public function home() {

Article::first();

}

}

DROP TABLE IF EXISTS articles; CREATE TABLE articles ( id int(11) unsigned NOT NULL AUTO_INCREMENT, title varchar(255) DEFAULT NULL, content longtext, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8; LOCK TABLES articles WRITE; INSERT INTO articles (id, title, content) VALUES (NULL,'我是标题','

我是内容呀~~

我真的是内容,不信算了,哼~ O(∩_∩)O

', NULL,'我是标题','

我是内容呀~~

我真的是内容,不信算了,哼~ O(∩_∩)O

'); UNLOCK TABLES;刷新页面!你将看到从数据库中获取的文章标题和内容显示出来。恭喜你!你已经成功实现了MVC中的M(模型)和C(控制器)部分。接下来,我们将开始调用V(视图)部分,进一步完善我们的MVC应用。视图调用与MVC架构的理解

在PHP开发中,对MVC(Model-View-Controller)架构的深入理解和实践是至关重要的。近日,我对MVC的理解有了更深一层的领悟,想要分享给大家。在此之前,我们先来了解一下关于文章模型的修改。

在`models/Article.php`中,我们定义了`Article`类,其中的`first()`方法用于从数据库中获取第一条文章记录。这个方法通过连接数据库、选择数据库、执行查询语句等步骤来获取数据,并将结果返回。这是一个典型的Model层的功能,负责与数据的交互。

接下来,在`HomeController`中,我们调用了这个`first()`方法,获取文章数据,并将数据传递给视图进行展示。这个过程体现了MVC的分离思想,Controller作为桥梁,连接Model和View,传递数据。

保存并刷新页面,视图成功调用并展示了文章数据。这是一个简单的MVC运行实例,通过它我们可以深入理解MVC的工作原理。

对于学习MVC的开发者,很多人可能是通过学习和使用某个框架开始的。这样可能会让我们对框架产生依赖,离开框架后难以独立编写简单的页面。但其实,MVC的原理并不复杂。

无论使用多么高级的PHP框架,都要遵循PHP的运行原理和基本哲学。框架只是帮助我们更高效地实现MVC的架构模式,但核心的代码逻辑和PHP的基本语法还是要我们自己去掌握。

一个PHP网站和一个简单的php test.php脚本在逻辑上是没有区别的。它们都是将一段字符串作为参数传递给PHP解释器来运行。复杂的网站会根据URL来调用不同的文件和代码,返回相应的结果。

无论是简单的框架还是复杂的大型框架,它们都会在每一个URL的驱动下,组装一段可以运行的字符串给PHP解释器。解释器返回的字符串再传给访客的浏览器。这就是一个典型的MVC工作流程。

MVC架构并不是为了某个特定的技术或框架而诞生的,它的本质是为了解决大型软件的逻辑组织问题。在GUI软件出现之前,MVC架构就已经存在并广泛应用于各种场景中。命令行输出也是一种视图的表现形式。

在MFFC(假设是一个PHP的MVC框架)中,一个URL驱动的工作流程大致是这样的:入口文件require控制器文件,控制器文件require模型文件,模型与数据库交互获取数据并返回给控制器。控制器再将数据填充到视图中,最后返回给访客。这个过程清晰明了,体现了MVC的分离思想。

理解MVC的原理并不仅仅是为了使用某个框架,更是为了让我们能够设计出更清晰、更易于维护的软件架构。

上一篇:javaScript知识点总结(必看篇) 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by