首页 > 其他分享 >laravel:服务容器(10.27.0)

laravel:服务容器(10.27.0)

时间:2023-10-22 10:56:52浏览次数:34  
标签:laravel 容器 name extend 10.27 function App mall app

一,相关文档:

https://learnku.com/docs/laravel/10.x/container/14842

二,php代码:

假设我们有两种商品:虚拟商品如账号,实体商品如手办需要销售

1,App\extend\mall\GoodsInterface.php

1 2 3 4 5 6 7 <?php namespace App\extend\mall; //接口 interface GoodsInterface {     public function sale(); }

2,App\extend\mall\RealGoods.php

1 2 3 4 5 6 7 8 9 10 11 12 13 <?php namespace App\extend\mall; //实体商品 class RealGoods implements GoodsInterface {     private $name = '';     public function __construct($name) {         $this->name = $name;     }     public function sale() {         echo '实体商品:'.$this->name. '下订单,减库存,通知发货<br/>';     } }

3,App\extend\mall\VirtualGoods.php

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php namespace App\extend\mall; //虚拟商品 class VirtualGoods implements GoodsInterface {     private $name = '';     public function __construct($name) {         $this->name = $name;     }       public function sale() {         echo '虚拟商品:'.$this->name. '下订单,无需减库存,生成虚拟商品并通知用户<br/>';     } }

4,App\extend\mall\GoodsSale.php

1 2 3 4 5 6 7 8 9 <?php namespace App\extend\mall; //销售功能 class GoodsSale {     public function saleOne(GoodsInterface $goods) {         $goods->sale();     } }

5,routes/web.php中添加:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Route::get('container/test', function(){     app()->bind('RealGoods', function(){         return new \App\extend\mall\RealGoods('手办');     });     app()->instance('VirtualGoods', new \App\extend\mall\VirtualGoods('账号'));       app()->singleton('GoodsSale', function(){         return new \App\extend\mall\GoodsSale();     });       $goodsSale = app()->make('GoodsSale');       $rgoods = app()->make('RealGoods');     $goodsSale->saleOne($rgoods);       $vgoods = app()->make('VirtualGoods');     $goodsSale->saleOne($vgoods); });

6,相关说明:

上面的代码:通过saleOne方法的参数把对象注入进来,

app():用来生成容器。

bind(): 直接绑定一个容器对象。

 instance():绑定一个实例化对象。

 singleton(): 绑定一个单例对象。

绑定完成之后,make() 方法来获得容器中的对象实例

三,查看效果:

四,查看laravel框架的版本:

liuhongdi@lhdpc:/data/laravel/dignews$ php artisan --version
Laravel Framework 10.27.0

标签:laravel,容器,name,extend,10.27,function,App,mall,app
From: https://www.cnblogs.com/architectforest/p/17780052.html

相关文章

  • laravel:服务提供者(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/providers/14843二,php代码:1,业务代码:App\extend\mall\GoodsInterface.php1234567<?phpnamespaceApp\extend\mall;//接口interfaceGoodsInterface{    publicfunctionsale();}......
  • laravel:捕捉异常记录到日志(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/errors/14857#9e8f93二,php代码:1,代码:12345678910111213141516171819202122232425262728classNewsControllerextendsController{    //启用事务    publicfuncti......
  • laravel:定时任务(10.27.0)
    一,相关的文档:https://learnku.com/docs/laravel/10.x/scheduling/14875二,php代码:1,创建command:liuhongdi@lhdpc:/data/laravel/dignews$phpartisanmake:commandOrderStatus   INFO  Consolecommand[app/Console/Commands/OrderStatus.php]createdsucces......
  • laravel:使用tinker(10.27.0)
    一,启动与退出:liuhongdi@lhdpc:/data/laravel/dignews$phpartisantinkerPsyShellv0.11.22(PHP8.1.1—cli)byJustinHileman>exit   INFO  Goodbye.二,查询数据liuhongdi@lhdpc:/data/laravel/dignews$phpartisantinkerPsyShellv0.11.22(PHP8.1.......
  • Docker 容器的应用-记录一下
    此次使用环境说明一下,避免掉坑浪费过多时间MacminiM1/MacBookProM2Docker容器 OrbStack安装方式待补充#TODO Dockerlogin登录打包端口 客户端 ......
  • kubernets启动容器过程分析
    1.背景对于大数据组件,经常需要进行扩缩容的服务,例如Yarnnodemanager、AlluxioWorker。往往需要频繁的人工操作上线下线,非常繁琐,耗费较高的人力成本。为了降低这种人工操作的成本,可以考虑将这些服务部署到kubernets中进行管理。本文通过介绍kubernets启动容器的过程,介绍期间经......
  • php js + laravel + mysql开发的手术麻醉临床信息系统源码
    手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提......
  • docker cp 命令 - 宿主机与容器互相拷贝文件
    一、从容器拷贝文件到宿主机命令格式:$dockercp<containder-id>:/path/host/path例子:$dockercpc9b7f17d43e9:/opt/hello.txt/home/hello.txt二、从宿主机拷贝文件到容器命令格式:$dockercp/host/path<containder-id>:/path例子:$dockercp/home/hel......
  • laravel:开启/关闭调试模式(10.27.0)
    一,文档地址:https://learnku.com/docs/laravel/10.x/configuration/14836#701998二,设置1,.env中关于调试的默认值:APP_DEBUG=true2,关闭调试APP_DEBUG=false说明:刘宏缔的架构森林—专注it技术的博客,网站:https://blog.imgtouch.com原文: https://blog.imgtouch.com/ind......
  • laravel:访问redis(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/redis/14887二,php代码1,配置.env使用默认的设置:REDIS_HOST=127.0.0.1REDIS_PASSWORD=nullREDIS_PORT=63792,controller中引用:12345678910111213141516171819202122232425<?ph......