仓酷云

标题: PHP教程之一步步编写PHP的Framework(二) [打印本页]

作者: 活着的死人    时间: 2015-2-3 23:29
标题: PHP教程之一步步编写PHP的Framework(二)
我的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。     
    实践上要本人完成一个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长相奇怪也就不足为奇了。
作者: 山那边是海    时间: 2015-2-3 23:39
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 莫相离    时间: 2015-2-9 07:26
当然这种网站的会员费就几十块钱。
作者: 老尸    时间: 2015-2-27 04:27
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 灵魂腐蚀    时间: 2015-3-8 19:58
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 小妖女    时间: 2015-3-16 13:18
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 活着的死人    时间: 2015-4-1 01:20
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 谁可相欹    时间: 2015-4-1 18:31
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 小女巫    时间: 2015-4-5 20:39
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 只想知道    时间: 2015-4-9 16:00
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 第二个灵魂    时间: 2015-4-14 08:28
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 乐观    时间: 2015-6-10 12:01
爱上php,他也会爱上你。
作者: 若相依    时间: 2015-6-12 03:37
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: admin    时间: 2015-6-13 18:08
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 不帅    时间: 2015-6-16 03:51
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 爱飞    时间: 2015-6-26 13:28
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 柔情似水    时间: 2015-6-29 21:57
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 精灵巫婆    时间: 2015-7-6 00:53
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 愤怒的大鸟    时间: 2015-7-6 01:09
做为1门年轻的语言,php一直很努力。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2