博客列表 >写一个依赖注入,mvc,简单的路由-1011

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

风吹的博客
风吹的博客原创
2019年11月12日 17:10:50823浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议