PHP中的MVC(保举学习:PHP视频教程)
MVC[1]正在软件工程中是一种软件的架构。从php的角度来说MVC有一些没有同。
Model(模子),顺序使用性能的完成,顺序的逻辑的完成。正在PHP中担任数据治理,数据天生。
View(视图),图形界面逻辑。正在PHP中担任输入,解决若何挪用模板、需求的资本文件。
Controller(管制器),担任转发申请,对申请解决。正在PHP中依据申请决议挪用的视图及应用的数据。
为何应用MVC
MVC的次要作用是为了将代码分层、分类。
MVC的次要目的是为理解决Web开发中别离开发与设计工作,使其工作绝对自力。
正在这样的进程中还发现了其余的一些优点,网站的目次构造愈加明晰,网站更容易保护与扩大,能够完成模块的复用。
MVC完成
申请URL
起首,商定申请页面时的URL,以以下构造进行完成:
localhost/index.php?c=demo&a=index¶m=welcome
假如想失去愈加柔美的URL构造,能够进行优化,为由这URL构造优化与本文关系没有年夜,当前进行分享。
从下面的参数能够看出,拜访的文件是index.php,同时含有3个参数辨别为c、a、param。
MVC目次构造
接着,布局MVC的目次构造以下:
/* ├─www # 网站根目次 │ ├─controller # 管制器目次 │ │ ├─democontroller.php # demo管制器 │ ├─model # 模子目次 │ │ ├─model.php # model模子 │ ├─view # 视图目次 │ │ ├─index.php # index视图 │ ├─index.php # 入口文件 */
管制器controller
将以下代码增加到controller/democontroller.php文件中。
// controller/democontroller.php class DemoController { public function index() { echo 'hello world'; } }// End of the class DemoController // End of file democontroller.php
正在这个文件中仅仅界说了一个DemoController的类,且其只蕴含一个index办法,用于输入hello world。
将上面代码增加到入口文件index.php文件中。
//index.php require('controller/democontroller.php'); $controller = new DemoController(); $controller->index(); // End of index.php
正在阅读器中应用下面的商定的URL进行拜访,看到输入hello world。当然假如你申请的URL没有是那样,而是以下面所示也能失去一样的输入。
localhost/index.php?c=abc
发现URL中的参数尚未任何作用。
假如应用上面的URL进行拜访,能够预感没有会有任何输入。
localhost/controller/democontroller.php
能够看到要想拜访这个网站并失去正确的后果,今朝只能经过index.php来拜访,这也是为何称它为入口文件的缘由。如今无论参数若何只能拜访一样一个页面,那末若何来决议显示没有同的后果呢?或许挪用没有同的管制器呢?
改良入口文件
上面行使URL中的参数来决议应用哪一个管制器。
//index.php // get runtime controller prefix $c_str = $_GET['c']; // the full name of controller $c_name = $c_str.'controller'; // the path of controller $c_path = 'controller/'.$c_name.'.php'; // get runtime action $method = $_GET['a']; // load controller file require($c_path); // instantiate controller $controller = new $c_name; // run the controller method $controller->$method(); // End of index.php
一样正在阅读器中应用下面的商定的URL进行拜访,看到输入hello world。代码中的正文曾经阐明了每一一步的目的。当然能够经过扭转URL参数中的c与a值来挪用没有同的controller及其办法,以输入没有同的后果。
视图View
后面只是应用了管制器controller,同时正在入口文件index.php中完成了静态挪用没有同的管制器。接着退出视图将显示别离。
// view/index.php class Index { public function display($output) { // ob_start(); echo $output; } } // End of index.php
视图目次中的index.php文件中界说了Index办法,且只有一个display()函数,担任将通报给它的变量进行输入。
上面修正管制器文件。
// controller/democontroller.php class DemoController { private $data = 'Hello furzoom!'; public function index() { //echo 'hello world'; require('view/index.php'); $view = new Index(); $view->display($data); } }// End of the class DemoController // End of file democontroller.php
正在管制器中界说了一个data公有变量,index()办法再也不间接输入,而是应用视图工具解决输入。此时,按下面的商定的URL进行拜访时,将看到输入:
Hello furzoom!
能够依据没有同的申请挪用没有同的视图类,以没有同的方式显示数据。这样就将添加了视图的作用,设计职员能够只针对视图进行页面的设计。
模子Model
下面貌似曾经很cool了,然而显示甚么样的内容是正在管制器中间接指定的,心愿内容也由URL指定,这样将数据的解决交给模子来解决。
// model/model.php class Model { private $data = array( 'title' => 'Hello furzoom', 'welcome' => 'Welcome to furzoom.com', ); public function getData($key) { return $this->data[$key]; } } // End of model.php
视图文件model.php界说了一个Model类,类中界说了一个getData()的办法,用于前往申请的数据。
同时修正入口文件index.php以下:
//index.php // get runtime controller prefix $c_str = $_GET['c']; // the full name of controller $c_name = $c_str.'controller'; // the path of controller $c_path = 'controller/'.$c_name.'.php'; // get runtime action $method = $_GET['a']; // get runtime parameter $param = $_GET['param']; // load controller file require($c_path); // instantiate controller $controller = new $c_name; // run the controller method $controller->$method($param); // End of index.php
添加了一个参数$param,将其作为管制器的办法挪用参数。
还需求修正管制器的办法依据没有同参数获得没有同的数据。
// controller/democontroller.php class DemoController { // private $data = 'Hello furzoom!'; function index($param) { // echo 'hello world'; require('view/index.php'); require('model/model.php'); $model = new Model(); $view = new Index(); $data = $model->getData($param); $view->display($data); } }// End of the class DemoController // End of file democontroller.php
蕴含需求的视图文件以及模子文件,而后天生视图与模子文件,接着经过模子工具获得数据,再用视图工具来输入获得的数据。
此时,正在阅读器中应用下面的商定的URL进行拜访,将失去输入以下:
Welcome to furzoom.com
至此PHP的MVC模式曾经根本引见实现了,残余的工作就是依据需求进行增加裁减了,很简略吧!!
以上就是php完成简略MVC的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学 MVC
抱歉,评论功能暂时关闭!