您的位置:首页 > 运维架构 > 网站架构

MVC架构学习之EasyFirst——快点夸我爱学习~

2016-04-28 15:13 417 查看
iMooc上的MVC教程练习。

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

一、准备

工欲善其事~

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

项目名称:MVCEasyFirst;

文件命名:testController.class.php

文件名 控制器 类文件类型

代码标准:PSR-2;

二、搭建

Controller

<?php
namespace MVCEasyFirst\Controller\test;

use MVCEasyFirst\Model\test\testModel;
use MVCEasyFirst\View\test\testView;
//控制器是唯一需要和用户进行连接的地方
//控制器“承上启下”
//控制器负责:1、接收指令;2、调用模型并接收模型处理好的数据;3、调用视图(传递数据给视图)
class testController
{
public function show()
{
$testModel=new testModel();
$data=$testModel->get();
$testView=new testView();
$testView->display($data);
}
}


Model

<?php
namespace MVCEasyFirst\Model\test;

//模型负责:1、接收指令;2、处理并返回数据
//双向,但仅与控制器相连接
class testModel
{
public function get()
{
return "Hello world!";
}
}


View

<?php
namespace MVCEasyFirst\View\test;

//视图负责:1、接受指令;2、显示相关结果给浏览器/用户;
//单向通路,C->V->User
class testView
{
public function display($data)
{
echo $data;
}
}


三、调用

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

$testController=new testController();
$testController->show();


四、小结

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

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

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



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

把 MVC应用到生产中;

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

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

系统目录的规范化



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



六、简化M\V\C调用

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

<?php
namespace MVC\func;
//一些框架中简化用到的函数

function C($name,$method)
{
require_once '/libs/Controller/'.$name.'Controller.class.php';
//eval('$obj=new '.$name.'Controller();$obj->'.$method.'();');
$controller=$name.'Controller';
$obj=new $controller();
$obj->$method();
}

function M($name)
{
require_once 'libs/Model/'.$name.'Model.class.php';
$model=$name.'Model';
$obj=new $model();
return $obj;
}

function V($name)
{
require_once 'libs/View/'.$name.'View.class.php';
$view=$name.'View';
$obj=new $view();
return $obj;
}


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

<?php
require_once 'func.php';

\MVC\func\C('test', 'show');


<?php
class testController
{
public function show()
{
echo "hello";
}
}


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

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

环境:zend12+PHP5.5



这部分暂时这样,下一部分是smarty
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: