手机版

php只是实现了MVC

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

在PHP中使用MVC越来越流行,尤其是在一些开源框架中。MVC足以应对大多数情况,但仍有一些情况不适合它,比如简单的个人博客。对于只有几百篇文章的博客来说,使用MVC让人觉得有些过于复杂。同样,对于新浪这样的门户网站,使用MVC会加载大量文件,对速度的影响是不可接受的。逢蒙介绍了MVC的基本原理和一个简单的实现。下面的介绍适用于PHP开发。

PHP中的MVC。

MVC[1]是软件工程中的一种软件架构。从php的角度来看,MVC有一些不同。

模型,程序应用功能的实现,以及程序逻辑的实现。负责PHP中的数据管理和数据生成。

视图,图形界面逻辑。负责PHP中的输出,处理如何调用模板和所需的资源文件。

负责转发和处理请求的控制器。根据PHP中的请求决定调用哪个视图和使用哪个数据。

为什么要用MVC?

MVC的主要功能是对代码进行分层和分类。

MVC的主要目的是将Web开发中的开发和设计工作分开,使其工作相对独立。

在这个过程中,还发现了一些其他的优势,比如网站的目录结构更加清晰,网站的维护和扩展更加容易,模块的复用。

MVC实现

请求网址

首先,请求页面时的网址是按照以下结构约定和实现的:

复制代码如下:localhost/index.php?c=demoa=indexparam=欢迎

如果你想得到一个更漂亮的URL结构,可以进行优化,因为这个URL结构优化和这篇文章关系不大,所以我们后面会分享。

从上面的参数可以看出,被访问的文件是index.php,包含三个参数,即c、a和param。

MVC目录结构

然后,规划MVC的目录结构如下:

复制代码如下:/*www #网站根目录 controller #控制器目录democontroller.php #演示控制器 model #模型目录model.php #模型目录 view #视图目录

控制器

将以下代码添加到controller/democontroller.php文件中。

复制的代码如下://controller/demo controller . phpclass demo controller { public function index(){ echo ' hello world };}}//类结束演示控制器//文件结束democontroller.php

这个文件中只定义了一个DemoController类,它只包含一个输出hello world的索引方法。

将以下代码添加到门户文件index.php文件中。

复制的代码如下://index . phprequire(' controller/demo controller . PHP ');$ controller=new DeMocontroller();$ controller-index();//index.php的终结

使用上面指定的网址在浏览器中访问,并看到输出hello world。当然,如果您请求的网址不是那样的,您可以获得如下所示的相同输出。

复制代码如下:localhost/index.php?c=abc

我发现网址中的参数还没有效果。

如果您使用以下网址进行访问,您可能不会看到任何输出。

复制的代码如下: localhost/controller/demo controller . PHP。

可以看出,如果你想访问这个网站并获得正确的结果,目前只能通过index.php访问,这就是为什么它被称为门户文件。现在不管参数如何,都只能访问同一个页面,那么如何决定显示不同的结果呢?还是叫不同的控制器?

改进条目文件

使用网址中的参数决定使用哪个控制器。

复制代码如下://index.php//get运行时控制器前缀$ c _ str=$ _ get[' c '];//控制器$c_name=$c_str的全名。“控制器”;//控制器$c_path的路径='controller/'。$c_name。PHP ';//get运行时操作$ method=$ _ GET[' a '];//加载控制器file require($ c _ path);//实例化控制器$ controller=new $ c _ name//运行controller方法$ controller-$ method();//index.php的终结

另外,使用上面在浏览器中指定的URL进行访问,并看到输出hello world。代码中的注释已经解释了每个步骤的目的。当然,可以通过改变URL参数中的C和A值来调用不同的控制器及其方法,以输出不同的结果。

视角

以前只使用控制器控制器,在门户文件index.php中动态调用不同的控制器。然后添加视图将显示分离。

复制代码如下://view/index.php类index { public function display($ output){//ob _ start();echo $输出;} }//index.php的终结

Index方法是在视图目录的Index文件中定义的,只有一个display()函数,负责输出传递给它的变量。修改下面的控制器文件。

复制代码如下://controller/demo controller . phpclass demo controller { private $ data=' hello fur zoom!'。公共函数index(){//echo ' hello world ';需要(' view/index . PHP ');$ view=new Index();$ view-display($ data);}}//类结束演示控制器//文件结束democontroller.php

控制器中定义了一个数据私有变量,index()方法不再直接输出,而是使用view对象来处理输出。这时,按照上面约定的网址访问时,会看到输出:

你好福尔祖姆!您可以根据不同的请求调用不同的视图类,并以不同的形式显示数据。这样会增加视图的功能,设计师只能为视图设计页面。

模型

上面看起来很酷,但是说明了控制器里直接指定了什么样的内容,希望内容也用URL指定,这样数据处理就交给模型了。

复制的代码如下://model/model . phpclassmall { private $ data=array(' title '=' hello fur zoom ',' welcome'='欢迎来到fur zoom.com ',);公共函数getData($ key){ return $ this-data[$ key];} }//model.php的终结

视图文件model定义了一个模型类,其中定义了一个getData()方法来返回请求的数据。

同时,修改条目文件index.php如下:

复制代码如下://index.php//get运行时控制器前缀$ c _ str=$ _ get[' c '];//控制器$c_name=$c_str的全名。“控制器”;//控制器$c_path的路径='controller/'。$c_name。PHP ';//get运行时操作$ method=$ _ GET[' a '];//get运行时参数$ param=$ _ GET[' param '];//加载控制器file require($ c _ path);//实例化控制器$ controller=new $ c _ name//运行controller方法$ controller-$ method($ param);//index.php的终结

参数$param被添加为控制器的方法调用参数。

还需要修改控制器的方法,根据不同的参数获得不同的数据。

复制代码如下://controller/demo controller . phpclass demo controller {//private $ data=' hello fur zoom!'。函数索引($ param){//echo ' hello world ';需要(' view/index . PHP ');需要(' model/model . PHP ');$ Model=new Model();$ view=new Index();$ data=$ model-GetDATa($ param);$ view-display($ data);}}//类结束演示控制器//文件结束democontroller.php

包括所需的视图文件和模型文件,然后生成视图和模型文件,然后通过模型对象获取数据,然后使用视图对象输出获取的数据。

此时,使用上面指定的网址在浏览器中访问,输出如下:

欢迎来到furzoom.com,如下图所示:

至此,PHP的MVC模式已经基本介绍完毕,剩下的工作就是根据需要进行添加和扩展,非常简单!

版权声明:php只是实现了MVC是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。