Blogger Information
Blog 23
fans 0
comment 0
visits 20041
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
写一个依赖注入,mvc,简单的路由-1011
风吹的博客
Original
830 people have browsed it

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中的参数部分先提取出来再,然后将键值对应,再映射到方法中






Correcting teacher:查无此人查无此人

Correction status:qualified

Teacher's comments:完成的不错。
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments