laravel服务容器笔记

第一章 文件结构
1、 Laravel框架所有配置文件都保存在config目录中。
2、 根目录:
1) app
2) bootstrap
3) config
4) database
5) public
6) resources
7) routes
8) storage
9) tests
10)vendor
3、1)app目录包含应用程序的核心代码,几乎所有类都在这里。
2)Bootstrap目录包含引导框架的app.php,还包含一个cache目录(存放框架生成的用来提升性能的文件)
3)config目录,应用程序的所有配置文件
4)database目录包含数据填充和迁移文件以及模型工厂类。还可以作为SQLite数据库存放目录。
5)public目录包含入口文件index.php,进入应用程序的所有请求的入口点。此目录还包含一些资源文件(图片、js、css)
6)resources目录。包含了视图和未编译的资源文件(如less、sass、js),还包含所有语言文件
7)routes目录包含所有路由定义。
默认包含web.php、api.php、console.php和channels.php
《1》 Web.php包含routeServiceProvider放置在web中间件组中的路由,它提供会话状态、CSRF防护和cookie加密。
《2》 api.php包含routeServiceProvider放置在api中间件组中的路由,他提供频率限制
《3》 console.php是定义所有给予控制台命令闭包函数的地方。
《4》 channel.php是用来注册你的应用支持的所有的事件广播渠道的地方
8)storage目录包含编译后的blade模板、session会话生成的文件、缓存文件以及框架生成的其他文件。
《1》app:存储应用生成的任何文件
《2》framework:用来存储框架生成的文件和缓存
《3》logs:应用的日志文件
9)Tests目录:包含自动化测试文件,每个测试类都应该以“Test”作为后缀。
10)vendor目录:包含所有的composer依赖包。

4、
1)app目录,包含额外的各种目录,如console,http,provider。将console和http目录视为向应用程序的核心提供API。Console包含所有的Artisan命令,而http目录包含你的控制器,中间件和请求。
《1》broadcasting
《2》console包含应用程序所有自定义ARTisan命令。可以注册自定义的artisan命令。
《3》events目录,默认不存在,安置事件类
《4》exceptions目录包含应用程序的异常处理
《5》 http目录包含控制器、中间件和表单请求。处理进入应用程序请求的所有逻辑几乎都放置在此目录
《6》 jobs目录(默认不存在)安置应用程序的队列任务。
《7》 listeners目录(默认不存在)包含事件的处理类。事件侦听器接受一个事件实例并执行逻辑以响应被触发的事件。
《8》 mail目录(默认不存在)包含应用程序发送邮件的所有类.构建一个封装所有逻辑的邮件类。
《9》 notifications目录(默认不存在)包含应用程序的发送的所有事务通知
《10》 policies目录(默认不存在)包含应用程序的授权策略类
《11》 providers目录包含应用程序的所有服务提供者。
《12》 rules目录(默认不存在)包含应用程序的自定义验证规则对象。规则用于将复杂的验证逻辑封装在一个简单对象中。

第二章 请求周期/过程
1、 请求入口index.php
2、 Index.php文件加载composer生成的自动加载设置
3、 从bootstrap/app.php脚本中检索laravel应用程序的实例。
4、 Laravel第一个动作是创建一个应用程序/服务容器。
5、 根据进入应用程序的请求类型来将传入的请求发送到http内核或控制台内核。(这两个内核是用来作为所有请求都要通过的中心位置)
1) http内核继承了Illuminate\Foundation\Http\Kernel 类,该类定义了一个bootstrappers数组。这些bootstrappers配置了错误处理,日志,检测应用环境,以及其他在请求被处理前需要被执行的任务。
2) http内核还定义了所有请求被应用程序处理之前必须经过的HTTP中间件,这些中间件处理HTTP会话读写、判断应用是否处于维护模式、验证CSRF令牌等等。
3) http内核的handle方法:获取一个request,返回一个response。
6、 内核启动操作中。所有服务提供者的register方法都会被调用,然后一旦所有服务提供者均注册后,boot方法才被调用。
服务提供者给予框架开启多种多样的组件,像数据库,队列,验证器,以及路由组件。只要被启动服务提供者就可以支配框架的所有功能,所以服务提供者也是laravel整个引导周期最重要的组成部分。
Ps:服务提供者:服务的被调用方(为其他服务提供服务的服务)
服务消费者:服务的调用方(以来其他服务的服务)
所有应用下的服务提供者均配置到config/app.php配置文件中providers数组中。
7、 一旦启动且所有服务提供者都被注册,request会被递送给路由。路由将会调度请求,交给绑定的路由或控制器,也包括路由绑定的中间件。

第三章 服务容器
1、laravel服务容器是一个用于管理类的依赖和执行依赖注入的强大工具。
类的以来通过构造函数,或者某种情况下通过setter方法注入到类中。
2、服务绑定
在服务提供器中,可以通过$this->app属性访问容器。可以通过容器的bind方法注册绑定。
bind(要绑定的类/接口名,返回类实例的closure)
依赖注入:只要不是由内部生产(比如初始化、构造函数_construct中通过工厂方法、自行手动new的),而是由外部参数或其他形式注入的,都是以来注入。

<?php
class Container
{
    protected $binds;//数组

    protected $instances;//数组
//$abstract是超人的名称和超能力,$concrete是具体的生成的方法
    public function bind($abstract, $concrete)
    {
        if ($concrete instanceof Closure) {
            //匿名函数
            $this->binds[$abstract] = $concrete;
        } else {
            $this->instances[$abstract] = $concrete;
        }
    }

    public function make($abstract, $parameters = [])
    {
        //如果为null,返回0
        if (isset($this->instances[$abstract])) {
            return $this->instances[$abstract];
        }

        array_unshift($parameters, $this);

        return call_user_func_array($this->binds[$abstract], $parameters);
    }
}
// 创建一个容器(后面称作超级工厂)
$container = new Container;

// 向该 超级工厂 添加 超人 的生产脚本
$container->bind('superman', function($container, $moduleName) {
    return new Superman($container->make($moduleName));
});

// 向该 超级工厂 添加 超能力模组 的生产脚本
$container->bind('xpower', function($container) {
    return new XPower;
});

// 同上
$container->bind('ultrabomb', function($container) {
    return new UltraBomb;
});

// ******************  华丽丽的分割线  **********************
// 开始启动生产
$superman_1 = $container->make('superman', 'xpower');
$superman_2 = $container->make('superman', 'ultrabomb');
$superman_3 = $container->make('superman', 'xpower');

3、 closure用于代表匿名函数的类。
匿名函数没有名字,如果使用他,需要返回一个变量。
4、index.php文件里面有一行初始化服务器容器的代码,调度的相关文件就是app.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值