Laravel依赖
首先有个接口
interface Visit {
public function go ();
}
然后有三个类Leg,Car,Train
class Leg implements Visit {
public function go (){
echo "walt to 新疆";
}
}
class Car implements Visit {
public function go () {
echo "drive car to 新疆";
}
}
class Train implements Visit {
public function go () {
echo "go to 新疆 by train";
}
}
依赖关系:有一个旅行者Traveller
class Traveller {
protected $trafficTool;
public function __construct () {
//依赖产生
$this->trafficTool = new Leg(); //选择步行
}
public function visitXinjiang () {
$this->trafficTool->go(); //去新疆玩啦
}
}
$visit = new Traveller();
$visit->visitXinjiang();
简单工厂模式:
//工厂
class TracfficToolFactory{
public function createTracfficTool($name) {
switch ($name) {
case 'Leg':
return new Leg();
break;
case 'Car':
return new Car();
break;
case 'Train':
return new Train();
break;
}
}
}
//Traveller
class Traveller {
protected $TrafficTool;
public function createTraffic ($name) {
$this->TrafficTool = new TracfficToolFactory()->createTracfficTool($name);
}
public function visitXinjiang () {
$this->TrafficTool->go();
}
}
$traffic = new Traveller();
$traffic->createTraffic('Leg');
$traffic->visitXingjiang();
Laravel依赖的更多相关文章
- Laravel 依赖注入原理
众所周知 Laravel 的文档对于依赖注入只写了如何使用,相信大多数人对于他的实现原理并不太清楚.虽然使用过程中并不需要关心她的原理,但是了解原理让你使用起来更自信.这个帖子就通过一个小 demo ...
- laravel依赖注入 容器
[看完就懂]Laravel 服务容器,IoC,DI DI DI就是常说的依赖注入,那么究竟什么是依赖注入呢? 打个比方,电脑(非笔记本哈)需要键盘和鼠标我们才能进行操作,这个‘需要’换句话说 ...
- php+laravel依赖注入浅析
laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好. 通常我们的调用如下. $config = $container->make('c ...
- laravel依赖注入浅析
laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好. 通常我们的调用如下. $config = $container->make('c ...
- laravel 依赖注入
<?php interface Animal{ public function attack(); public function talk(); } class People implemen ...
- laravel 依赖注入 接口设计
假设我现在需要做一个支付服务,那么我先设计一个接口 interface PayInterface{ public function pay(Order $order) : string; } 然后实现 ...
- Laravel 4 系列入门教程(一)
默认条件 本文默认你已经有配置完善的PHP+MySQL运行环境,懂得PHP网站运行的基础知识.跟随本教程走完一遍,你将会得到一个基础的包含登录的简单blog系统,并将学会如何使用一些强大的Larave ...
- Laravel - 1
Laravel - 1 Laravel是一个很强大又非常优雅的php框架,但是Laravel的很多组件都是由社区协作的结果,Composer是php开发的一个依赖管理工具,但是墙把绝大多数的开发者堵在 ...
- Laravel 5.5 文档 ] 快速入门 —— 安装配置篇
服务器要求 Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有 ...
随机推荐
- centos WPS 字体安装
首先下载字体,解压后将整个wps_symbol_fonts目录拷贝到/usr/share/fonts目录下,然后赋予可读可执行权限. 权限设置操作如下: cd /usr/share/fonts/ ch ...
- 【POJ3155】生活的艰辛Hard Life
题面 Description ADN公司内部共 n个员工,员工之间可能曾经因为小事有了过节,总是闹矛盾.若员工u和员工 v有矛盾,用边(u, v)表示,共 m个矛盾.最近,ADN公司内部越来越不团结, ...
- 使用 async await 封装微信小程序HTTP请求
1. 编写将普通回调函数形式的方法转换为promise方法的promisic方法 // util.js const promisic = function (func) { return functi ...
- Java——子类对象实例化的全过程
2.4子类对象实例化的全过程 public class TestDog { public static void main(String[] args) { Dog d = new Dog(); d. ...
- ETL工具-Kattle:查询 HTTP/WebService
发送HTTP POST请求,获取返回内容. 发送HTTP GET请求,获取返回内容,可以从前面获取URL.参数名.参数值 通过Restful获取数据 通过webService获取数据 HTTP ...
- Alibaba Cluster Data 开源:270GB 数据揭秘你不知道的阿里巴巴数据中心
打开一篇篇 IT 技术文章,你总能够看到“大规模”.“海量请求”这些字眼.如今,这些功能强大的互联网应用,都运行在大规模数据中心上,然而,对于大规模数据中心,你又了解多少呢?实际上,除了阅读一些科技文 ...
- DELPHI中如何闪烁应用程序窗口或任务栏按钮
使用FlashWindowEx函数: 一.设置FlashWInfoDelphi中TFlashWInfo申明如下:TypeTFlashWInfo = record cbSize : LongInt; h ...
- NOIp2018集训test-9-18
T1.Conjugate 只能选没选过的点,看成如果选了选过的堆的点就不管它继续选.如果第一次选到某一堆的点在第一次选到第一堆的点之前,这一堆对答案就会有1的贡献.那么a[i]有贡献的概率是a[i]和 ...
- 在vs2010下编译boost
1. 解压缩后,运行bootstrap.bat批处理文件,得到bjam.exe; 2. 在vs2010下编译boost boost最新版本已经支持vs2010,然而直接下载编译会发现一堆bug: 首先 ...
- Codeforces 1159A A pile of stones
题目链接:http://codeforces.com/problemset/problem/1159/A 题意:初始石头堆石子数未知,求进行 n 次加减操作后,石头堆石子数最小的可能是多少. 思路:正 ...