新闻中心 网络推广 网站建设 优化推广

慕课实战 前端到后台ThinkPHP开发整站

时间:2019-08-21   来源:本站


手先感谢慕课网平台能让我有幸听到大牛singwa老师的php课程,这套课程对我的php学习之路产生了很大的影响,由于文笔有限,还是分类讨论。这一篇的话说一下关于如何理解MVC框架并去编写类似于thinkphp结构的自己的框架!

整理思路为singwa老师课程+慕课老师pengcheng<<
MVC架构模式分析与设计>>所得出的心得。

关于MVC思想的理解:

singwa老师的课程是基于当前主流php框架"thinkPHP"所编写的CMS文章管理系统。课程中严格利用MVC思想进行了编码规范,让学习的小伙伴对MVC思想能有一个很深的认识,对喜欢PHP的小伙伴入门进阶很有帮助哟!
说到MVC 姑且将他们叫成 小M 小V 小C吧;

小C是一个协调能力很强的Girl,它的工作是经常和 小M 小V进行交流交互,当然由于她十分外向,所以也和浏览器用户打成一片。
接受到浏览器用户的指令 如果这个指令里要求小M也参一脚的话!小C就要开始和小M交流咯。此时小M时看管着数据库的大门的,平时很喜欢小C,这个时候为了“爱情”他愿意打开数据库的大门取出小C需要的东西(数据),然后小C很简单粗暴的var_dump()一下(输出数据库的内容),就在这个时候,用户觉得小M给小C的东西太赤裸裸了,不好看的!所以小C就想到了一个老友

小V,小V醉擅长穿搭了。她也很乐意帮助小C,就帮小C把从小M那里取到的“赤裸裸的数据”给美化了一下,然后送给了小C。此时小C把经过美化的“不再赤裸裸的数据”送给了用户,用户很满意!

很不擅长讲编这种故事,但是自己还是想尝试一下,莫喷。
总之在一个建议的CMS系统中 C负责逻辑代码处理 M负责数据库的交互提取 V负责输出到浏览器的模板操作。

关于PHP框架:

经过对课程的学习和研究,对PHP框架的一些基本原理也慢慢有了自己的认识。当然只是认识,可能还是会有错误的!在这里说几个比较重要的点吧。

一、 如何做出一个这样的URL链接:http://xxx.com/index.php?c=index&a=add

上面是一个典型的thinkphp所生成的url入口链接。那么m为模块,c为控制器名称,a为此控制器下的方法名称。
那么怎么才能实现在这样url形式呢?其实很简单 用的就是我们经常用到的$_GET[] ,举个栗子!按照上述的url形式的话 我们此时的$_GET[c] 就等于index,$_GET[a]就等于add,此时 我们就可以这样去做:

1、创建一个indexcontroller.php (不一定非要这么写 可以自己去规定)
2、打开创建的文件 写上如下代码:

   class indexController{
                public function add(){
                        echo "hello";
                }
    }

3、可见我们很简单的创建了一个类和一个类里面的方法 类名为indexController 方法为 add 那么这个时候 我们正常情况下如果想执行add方法我们会怎么做呢?说对了!实例化对象,然后 -> 箭头戳方法就可以了!代码如下:

$obj=new indexController;$obj->add();

4、好了,那么我们知道怎么去用常规方法去执行这个类里的方法了,此时我们要做的就是框架化,把下面代码写入传说中的入口文件 index.php(URL屁股后面带参数的文件名 可以为任意文件名 自己改~)!代码如下:

  if(isset($_GET['c']))&&isset($_GET['a']) ){
        //如果控制器C A 被设置了! 那么我们要做的是 包含这个控制器文件进来
        require(''..");//这里拼接的形式就是 :目录/$_GET[c]."Controller.php";
        //文件已经包含进来了 那么可以实例化这个文件里的类并使用类里的方法了
        $obj= new $_GET[c]."Controller";
        $obj->$_GET['a']();
    }

5、经过上述四步 就能简单的实现一个 访问

http://xxx.com/index.php?c=index&a=add 就能输出一个 hello

6、既然是这样的话 我们何不在add方法里也写一条代码呢?这样就可以简单的实现V层了。太简单了 require("xx.html");搞定!

【PS:上面的纯粹是在慕课的编辑器里手打的,没有经过测试,只是一个小思路!具体还要对get到的值进行各种字符处理,对入口文件里写的代码进行进一步封装就是后面优化的事情啦!】

二、实现M层

大家都知道M层是用来进行数据库操作的,其实他的实现方法和C差不多。只不过和C干的事情不一样而已。还是举个栗子!

1、创建一个NewsModel.php (不一定非要这么写 可以自己去规定)
3、封装数据库的基本操作类 DB.class.php 增删改查 根据ID更 改 查 删.. 根据 XX更改查删【这里就不细写了,懒】
2、打开创建的文件 写上如下代码:
require("DB.class.php");//包含数据库操作类 这个可以写在入口文件哟。这里为了理解就先包含在这里啦!

class NewsModel{
            $_db="";
            //下面多了一个构造函数 也就是在实例化的时候,自动执行构造函里的方法!构建一个数据库 操作对象。
            public function __contruct(){
                    $this->_db=new DB; //实例化一个数据库操作对象!可以开始大肆的操作数据库了!
            }
            public function add(){
                   $this->_db->add(); //比如DB类里有一个add方法!这里就可以调用到啦!接下来的事情你懂得!
            }
}

3、和控制器曾实现一样!实例化对象,然后 -> 箭头戳方法就可以了!代码如下:

$obj=new NewsModel;$obj->add();

4、好了,那么我们怎么去在C里去执行M的方法呢?还是很简单啦!此时我们要封装一个函数 姑且称为 D 即

   function D($name){
        require_once('目录/'.$name.'Model.php');
        $obj = 'new'.$name.'Model()'; //不知道拼接的是否正确 就是实例化一个model对象       
        return $obj; //返回此对象
    }

5、好了 那么接下来 我们也在 C里执行M的方法了!怎么做呢?比如执行的是NewsModel下的方法!

  $obj=D("News");
    D("News")->add(); //这里跳跃性有点 大家往上拉看看newsModel这个类就明白了!!!

6、就这样 小C终于了小M勾结在了一起!

从实战课程中 学到的当然不止这些,当然这些也是比较基础的东西,但是自己一个字一个字敲出来我觉得还是蛮有意义的!除了关于建设自己的php框架和mvc思想的理解外,从课程中还学到了很多web JS操作的技巧。并且对ajax异步请求有了更深层次的了解。感谢singwa老师,感谢慕课网。写完罢工!继续去码代码看课程咯!



链接: https://pan.baidu.com/s/1DO74hGs2ia0g5qTelMQ3VA 提取码: pgjp 复制这段内容后打开百度网盘手机App,操作更方便哦

新闻推荐
南山手机网站建设公司
南山手机网站建设公司

南山手机网站建设公司搜索引擎往往会将这种行为定义为,站权重,所以一定要保证质量,宁可数量少一些,也不...

蛇口营销型网站建设报价
蛇口营销型网站建设报价

蛇口营销型网站建设报价站知名度足够高,就可以得到这些合作的机会。除了以上介绍的模式,还有很多其他的途...

民治网站制作哪家公司好
民治网站制作哪家公司好

民治网站制作哪家公司好页实际效果除了内容的合理和有效的排版设计之外,页的实际效果具有合理和有效的设计...

罗湖高端品牌网站设计哪家公司好
罗湖高端品牌网站设计哪家公司好

罗湖高端品牌网站设计哪家公司好各个页面都各具特色,页面都是自己成一页,然后通过链接汇集成一个整体页面...

Top