iMooc上的MVC教程练习。

MVC是PHP基础和进阶的分界点吧应该说是

一、准备

工欲善其事~

个人环境:windows10+wamp2.5+ZendStudio12;

项目名称:MVCEasyFirst;

文件命名:testController.class.php

             文件名 控制器     类文件类型

代码标准:PSR-2;

二、搭建

Controller

  1. <?php
  2. namespace MVCEasyFirst\Controller\test;
  3.  
  4. use MVCEasyFirst\Model\test\testModel;
  5. use MVCEasyFirst\View\test\testView;
  6. //控制器是唯一需要和用户进行连接的地方
  7. //控制器“承上启下”
  8. //控制器负责:1、接收指令;2、调用模型并接收模型处理好的数据;3、调用视图(传递数据给视图)
  9. class testController
  10. {
  11. public function show()
  12. {
  13. $testModel=new testModel();
  14. $data=$testModel->get();
  15. $testView=new testView();
  16. $testView->display($data);
  17. }
  18. }

Model

  1. <?php
  2. namespace MVCEasyFirst\Model\test;
  3.  
  4. //模型负责:1、接收指令;2、处理并返回数据
  5. //双向,但仅与控制器相连接
  6. class testModel
  7. {
  8. public function get()
  9. {
  10. return "Hello world!";
  11. }
  12. }

View

  1. <?php
  2. namespace MVCEasyFirst\View\test;
  3.  
  4. //视图负责:1、接受指令;2、显示相关结果给浏览器/用户;
  5. //单向通路,C->V->User
  6. class testView
  7. {
  8. public function display($data)
  9. {
  10. echo $data;
  11. }
  12. }

三、调用

  1. <?php
  2. use MVCEasyFirst\Controller\test\testController;
  3. require_once 'testController.class.php';
  4. require_once 'testModel.class.php';
  5. require_once 'testView.class.php';
  6. //MVC大量依赖引入,推荐require,和我之前想的不太一样
  7. //其实这个问题我个人觉得还是要分情况来说的,看是什么需求,需要运行(警告)还是发现问题所在(错误)
  8.  
  9. $testController=new testController();
  10. $testController->show();

四、小结

简单的小例子,直观的了解MVC模型!!!

注意区分清楚各个模块的“职责”!

再有就是规范开发的情况:

五、入口程序与系统目录的规范化

把 MVC应用到生产中;

单一入口机制:在一个web应用中,所有的请求都指向一个脚本文件,比如alksdjfklajfklj.php,也就是说,所有对程序的访问都是必须通过这个入口。

优点:得以实现MVC;对什么安全什么的也似乎比较方便控制。

系统目录的规范化

我就打算先这么干,至于以后那再说。

六、简化M\V\C调用

前面说过,MVC大量以来引用/调用,所以对于调用,不如写一个函数来集成/封装

  1. <?php
  2. namespace MVC\func;
  3. //一些框架中简化用到的函数
  4.  
  5. function C($name,$method)
  6. {
  7. require_once '/libs/Controller/'.$name.'Controller.class.php';
  8. //eval('$obj=new '.$name.'Controller();$obj->'.$method.'();');
  9. $controller=$name.'Controller';
  10. $obj=new $controller();
  11. $obj->$method();
  12. }
  13.  
  14. function M($name)
  15. {
  16. require_once 'libs/Model/'.$name.'Model.class.php';
  17. $model=$name.'Model';
  18. $obj=new $model();
  19. return $obj;
  20. }
  21.  
  22. function V($name)
  23. {
  24. require_once 'libs/View/'.$name.'View.class.php';
  25. $view=$name.'View';
  26. $obj=new $view();
  27. return $obj;
  28. }

其中,eval函数我也是第一次用,视频中讲不安全,就换成下面这些就好。

  1. <?php
  2. require_once 'func.php';
  3.  
  4. \MVC\func\C('test', 'show');
  1. <?php
  2. class testController
  3. {
  4. public function show()
  5. {
  6. echo "hello";
  7. }
  8. }

--------4/28更新---------------

我的环境问题或者其他什么,动态实例化类不可行,暂时放弃了,有哪个大师知道为什么,烦请告知啊~

环境:zend12+PHP5.5

这部分暂时这样,下一部分是smarty

MVC架构学习之EasyFirst——快点夸我爱学习~的更多相关文章

  1. 设计模式之美学习(九):业务开发常用的基于贫血模型的MVC架构违背OOP吗?

    我们都知道,很多业务系统都是基于 MVC 三层架构来开发的.实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式. 虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了 ...

  2. MVC架构学习

    作为一名小小的GreenBird,学习MVC呢,已经花费了2天了,期间得到了美丽的学姐的帮助,初步整理了一下. 首先,学习MVC呢就先以一个标准的MVC的简单的例子来入手,然后根据学姐的PPT,我用v ...

  3. go区块链学习教程之iris框架mvc架构

    在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...

  4. ExtJS 4.2.1学习笔记(一)——MVC架构与布局

    1       ExtJS入门 1.1     支持所有主流浏览器 调试推荐:chrome.Safari.Firefox 1.2     推荐目录结构 - appname (包含所有程序代码,是根目录 ...

  5. PHP学习(MVC架构与面向对象)

    想好好的学一下php中的一些面向对象的知识,以前只是为了打CTF随意的学了一下,但是为了以后的代码审计(准备PHP这边把thinkphp这个框架好好的学一下). PHP面向对象的基本知识 类与对象 类 ...

  6. 【JAVA】基于MVC架构Java技术荟萃案例演练

    基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servle ...

  7. MVC架构杂谈

    来源:伯乐在线专栏作者 - 林欣达 链接:http://ios.jobbole.com/86895/ 点击 → 了解如何加入专栏作者 前言 MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基 ...

  8. ExtJS 4 MVC架构讲解

    大规模客户端应用通常不好实现不好组织也不好维护,因为功能和人力的不断增加,这些应用的规模很快就会超出掌控能力,ExtJS 4 带来了一个新的应用架构,不但可以组织代码,还可以减少实现的内容新的应用架构 ...

  9. 从MVC框架看MVC架构的设计(转)

    尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...

随机推荐

  1. 初入网络系列笔记(6)TFTP协议

    一.借鉴说明,本博文借鉴以下博文 1.锤子,FTP协议,http://www.cnblogs.com/loadrunner/archive/2008/01/09/1032264.html 2.suna ...

  2. 浅谈 C#委托

    看了<CLR via C#>的17章委托后,为自己做一点浅显的总结,也分享给需要的人. .NET通过委托来提供一种回调函数机制,.NET委托提供了很多功能,例如确保回调方法是类型安全的(C ...

  3. 使用js批量选中功能实现更改数据库中的status状态值(批量展示)

    我们在开发项目的时候经常会在后台管理时用到批量展示功能来动态的修改数据库的值.下面以修改数据库的status状态值来实现批量展示功能.批量选中功能引用js来实现.前端html代码: <table ...

  4. [函数] Delphi FMX Windows 取得下载 Downloads 目录

    在 Firemonkey 提供了一个跨平台的函数 TPath.GetDownloadsPath 来取得该平台的下载目录,但是非常奇怪的是,在 Windows 平台下,取得的下载目录确是: C:\Use ...

  5. python基础之异常处理

    Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...

  6. Mac下如何查看Tomcat的版本?

    Tomcat提供了一个查询自身版本号的方法,要查询Tomcat的版本号,必须知道Tomcat所在的准确目录. 例如: 所用的Tomcat所在的目录下的bin文件夹的完整路径为:/Library/Tom ...

  7. Elasticsearch初步使用(安装、Head配置、分词器配置)

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.ElasticSearch简单说明 a.ElasticSearch是一个基于Lu ...

  8. css实现图片切换

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...

  9. Emacs学习心得之 LaTeX编辑

    目录 1. 前言 2. texlive的安装 3. AUCTEX的安装和配置 4. RefTEX的安装和配置 一.前言 本篇博文记录了Emacs下LaTeX编辑环境的搭建,参考一下文章: http:/ ...

  10. AJAX初探,XMLHttpRequest介绍

    AJAX初探,XMLHttpRequest介绍 AJAX      AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML.      AJ ...