博主信息
风吹的博客
博文
23
粉丝
0
评论
0
访问量
8929
积分:0
P豆:50

写一个依赖注入,mvc,简单的路由-1011

2019年11月12日 17:10:50阅读数:384博客 / 风吹的博客/ php

1.先写一个mvc

首先创建一个model.php

实例

<?php
//model中装待渲染数据
class model
{
	public function getdata()
	{
		return ['today'=>'今天光棍节!年年有今日岁岁有今朝'];
	}
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

再创建一个view.php,将model渲染为有序列表,在前面加一个小黑点

实例

<?php
class view
{
	public function fetch($data)
	{
		$a='<li>'.$data['today'].'</li>';
		return $a;
	}

}

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

最后写一个demo1.php,在里面引用model和view

实例

<?php
require 'model.php';
require 'view.php';
class Controller
{
	public function index()
	{
		//1.获取数据
		$model= new model();
		$data=$model->getdata();
		//2.渲染
		$view= new view();
		return $view->fetch($data); 
	}
}
//调用控制器
$con = new Controller();
echo $con->index();
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

效果图

mvc.png

2.写一个依赖注入,大体上没什么变化,变化在有控制器的那个脚本里

model.php

实例

<?php
//写一个MVC然后用依赖注入解耦
//model中装待渲染数据
class model
{
	public function getdata()
	{
		return ['today'=>'今天双十一'];
	}
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

view.php

实例

<?php
class view
{
	public function fetch($data)
	{
		$a='<li>'.$data['today'].'</li>';
		return $a;
	}

}

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo1.php

实例

<?php
require 'model.php';
require 'view.php';
class Controller
{
	public function index(model $model,view $view)
	{
		//1.获取数据
		
		$data=$model->getdata();
		//2.渲染
		
		return $view->fetch($data); 
	}
}
//调用控制器
$model= new model();
$view= new view();
$con = new Controller();
echo $con->index($model,$view);
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

变化在于:把实例化过程搬到类的外部了,并将实例化的结果分别传入到形参和实参的位置

效果图

yilai.png

3.写一个简单路由

实例

<?php
//路由就是将url中的参数映射到数值中
//1.解析出除域名外的其他内容
$url=$_SERVER['REQUEST_URI'];
//把那些内容用数组形似表现,并在url中传入
//模块:ad
//控制器:user
//方法:a
//参数:name,wang,mobile,666666,date,2018.12.31
$req=explode('/',$url);
//2.取出参数
$b=array_slice($req,7,6);
//3.将键和值对应起来
for($i=0;$i<count($b);$i+=2){
	$params[$b[$i]]=$b[$i+1];
}

//4.映射
class user
{
	//在形参位置输入键
	public function a($name,$mobile,$date)
	{
		return '姓名:'.$name.',手机号:'.$mobile.',日期:'.$date;
	}
}
//回调
echo call_user_func_array([(new user()), 'a'], $params);

运行实例 »

点击 "运行实例" 按钮查看在线实例

效果图

luyou.png

路由就是将uel中的参数部分先提取出来再,然后将键值对应,再映射到方法中






批改老师:查无此人查无此人

批改状态:合格

老师批语:完成的不错。

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论