zoukankan      html  css  js  c++  java
  • MVC架构学习之EasyFirst——快点夸我爱学习~

    iMooc上的MVC教程练习。

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

    一、准备

    工欲善其事~

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

    项目名称:MVCEasyFirst;

    文件命名:testController.class.php

                 文件名 控制器     类文件类型

    代码标准:PSR-2;

    二、搭建

    Controller

     1 <?php
     2 namespace MVCEasyFirstController	est;
     3 
     4 use MVCEasyFirstModel	est	estModel;
     5 use MVCEasyFirstView	est	estView;
     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 MVCEasyFirstModel	est;
     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 MVCEasyFirstView	est;
     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 MVCEasyFirstController	est	estController;
     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;对什么安全什么的也似乎比较方便控制。

    系统目录的规范化

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

    六、简化MVC调用

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

     1 <?php
     2 namespace MVCfunc;
     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 MVCfuncC('test', 'show');
    1 <?php
    2 class testController
    3 {
    4     public function show()
    5     {
    6         echo "hello";
    7     }
    8 }

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

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

    环境:zend12+PHP5.5

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

  • 相关阅读:
    3 saltstack高可用
    2 salt-masterless架构
    1 salt执行模块开发
    git push 后 链接总是灰色点击没有反应
    4. Beego 框架之cookie与session
    19 Go的全能ORM简单入门
    K8S
    Docker
    Python
    TS
  • 原文地址:https://www.cnblogs.com/andy1202go/p/5440175.html
Copyright © 2011-2022 走看看