|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。
实践上要本人完成一个MVC的使用也不难,咱们晓得MVC外面一切内容都必需经由掌握器,所以若何把掌握权交给掌握器呢?
咱们需求一个进口文件,进口文件担任将传递的恳求交给对应的掌握器,实践上也就是完成路由的功效。
为了进修的需求,可以将路由的功效简化,用户经由过程GET体例将掌握器的名和Action的名传递过去,进口文件吸收到一切参数以后,依照之前商定的划定规矩include某一个文件,然后实例化这个类,再挪用这个类的响应办法。
01 <?php 02 $controller = empty($_GET['c']) ? 'Index' : trim($_GET['c']); //设置了默许的掌握器 03 $action = empty($_GET['a']) ? 'index' : trim($_GET['a']); //设置了默许的Action 04 $controllerBasePath = dirname(__FILE__) . '/modules/controllers/'; 05 $controllerFilePath = $controllerBasePath . $controller . 'Controller.php'; 06 if(is_file($controllerFilePath)) { 07 include $controllerFilePath; 08 $controllerName = $controller . 'Controller'; 09 if(class_exists($controllerName)) { 10 $controllerHandler = new $controllerName(); 11 if(method_exists($controllerHandler,$action)) { 12 $controllerHandler->$action(); 13 } else { 14 echo 'the method does not exists'; 15 } 16 } else { 17 echo 'the class does not exists'; 18 } 19 } else { 20 echo 'controller not exists'; 21 } 看着代码行数仍是挺多的哦,实践上完成的功效对照复杂,就是经由过程承受经由过程GET体例传递的掌握器名和Action名,假如没有传递,那末挪用默许的掌握器名或Action名,当用户传递了掌握器名和Action名以后能够会存在如许一个成绩,就是经由过程咱们之前商定的划定规矩找不到响应的文件或类或办法,那末咱们需求显示友爱的信息,而不是让PHP抛出一系列的正告,如许关于法式的强健性很有匡助。
当有了掌握器以后,一切都变得复杂了,关于模子,咱们可以把它当作是一个通俗的类,只是在功效上它担任营业逻辑的处置。
1 <?php 2 class IndexModel { 3 public function test() { 4 return 'Hello world!'; 5 } 6 } 作为演示,咱们只是在这个模子外面前往一个Hello World,那末掌握器怎样利用这个模子呢,实践上也就是起首include这个文件,然后实例化类,挪用响应的办法。
咱们如今修正掌握器为:
01 <?php 02 class IndexController { 03 public function index() { 04 $modelPath = dirname(__FILE__) . '/../models/IndexModel.php'; 05 if(file_exists($modelPath)) { 06 include $modelPath; 07 $model = new IndexModel(); 08 echo $model->test(); 09 } else { 10 echo 'model does not exists'; 11 } 12 } 13 } 如今模子有了,那末怎样毗连视图呢?
1 <html> 2 <head> 3 </head> 4 <body> 5 <p><?php if(isset($var1)) {echo $var1; } ?></p> 6 </body> 7 </html> 写完视图以后,怎样经由过程掌握器挪用这个视图呢?
修正掌握器至以下:
01 <?php 02 class IndexController { 03 public function index() { 04 $modelPath = dirname(__FILE__) . '/../models/IndexModel.php'; 05 if(file_exists($modelPath)) { 06 include $modelPath; 07 $model = new IndexModel(); 08 $var1 = $model->test(); 09 $viewPath = dirname(__FILE__) . '/../views/index.php'; 10 if(file_exists($viewPath)) { 11 include $viewPath; 12 } else { 13 echo 'view does not exists'; 14 } 15 } else { 16 echo 'model does not exists'; 17 } 18 } 19 } 如许一个MVC的使用就搭起来了,固然对照粗陋,成绩还多多!!!
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。 |
|