yii2 自动引入php文件,composer 自动载入的四种方式

2023-10-26

Composer 是PHP的一个包依赖管理工具,类似Ruby中的RubyGems或者Node中的NPM,它并非官方,但现在已经非常流行。此文并不介绍如何使用Composer,而是关注于它的autoload的内容吧。

对于第三方包的自动加载,Composer提供了四种方式的支持,分别是 PSR-0和PSR-4的自动加载,生成class-map,和直接包含files的方式。

首先引入autoload.php,在主文件 index.php 中。

require 'vendor/autoload.php';

PSR-4(推荐)

在composer.json里是这样进行配置的:

{

"autoload": {

"psr-4": {

"Foo\\": "src/"

}

}

}

执行composer install更新自动加载。照PSR-4的规则,当在index.php中试图new Foo\Bar\Baz这个class时,composer会自动去寻找 "src/Bar/Baz.php" 这个文件,如果它存在则进行加载。

PSR-0(不推荐)

在composer.json里是这样进行配置的:

{

"autoload": {

"psr-0": {

"Foo\\": "src/"

}

}

}

执行composer install更新自动加载。注意,照PSR-0的规则,当在index.php中试图new Foo\Bar\Baz这个class时,composer会去寻找 "src/Foo/Bar/Baz.php" 这个文件,如果它存在则进行加载。

NOTE:另外注意PSR-4和PSR-0的配置里,"Foo\"结尾的命名空间分隔符必须加上并且进行转义,以防出现"Foo"匹配到了"FooBar"这样的意外发生。

Class-map方式

{

"autoload": {

"classmap": ["src/", "lib/", "Something.php"]

}

}

执行composer install更新自动加载。composer会扫描指定目录下以.php 或.inc 结尾的文件中的 class,生成 class 到指定 file path 的映射,并加入新生成的vendor/composer/autoload_classmap.php 文件中。

例如src/下有一个BaseController类,那么在autoload_classmap.php文件中,就会生成这样的配置:

'BaseController' => $baseDir . '/src/BaseController.php'

实例化类的方式这里有两种不同的情况。

如果加载的文件有命名空间,直接按命名空间实例化。

如果没有命名空间,直接按类名实例化。

Files方式

{

"autoload": {

"files": ["src/MyLibrary/functions.php"]

}

}

执行composer install更新自动加载。Files方式,就是手动指定供直接加载的文件。比如说我们有一系列全局的helper functions,可以放到一个helper文件里然后直接进行加载,也就是说,当你用require 'vendor/autoload.php';加载自动加载类时自动将files里的文件加载进来了,你直接使用就行了。

本帖已被设为精华帖!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yii2 自动引入php文件,composer 自动载入的四种方式 的相关文章

  • 利用阿里云服务器windows server 2012 搭建vpn

    首先可以查阅这篇文章 感谢作者大大 http abool blog 51cto com 8355508 1575399 以下是成功的关键 1 需要在服务器管理器中安装三个服务 网络策略和访问 web服务 iis 远程访问 安装远程访问是必须
  • 普通文本测试

    这是一段普通文本
  • Hbase权威指南(含目录,高清,免费)

    知识理应开源共享 拒绝收费收积分 Hbase权威指南 链接 https pan baidu com s 1Y YdMCPvjkZ06hG r8AJHg 提取码 j9fz
  • Arrays中的一些方法

    1 fill 用于填充数组 fill a val a是数组变量 给数组中的每个值都赋为val 例 int a new int 5 Arrays fill a 3 输出33333 fill a x y val a是数组变量 给数组中a x 到
  • C++从0到1(9):指针

    目录 1 指针的基本概念 2 指针变量的定义和使用 3 指针所占内存空间 4 空指针和野指针 5 const修饰指针 6 指针和数组 7 指针和函数 8 指针 数组和函数 1 指针的基本概念 作用 通过指针间接访问内存 内存编号从0开始记录
  • ubuntu22.04安装podman及cockpit并在WEB中管理容器

    目录 前言 一 准备工具 二 安装步骤 1 更新系统到最新版本 2 使用以下命令安装podman 3 使用以下命令安装cockpit及相关插件 三 启动服务 四 登录管理界面 五 使用podman容器管理 1 创建容器 2 管理容器 六 总
  • sqli-labs————Less-33

    Less 33 查看源代码
  • QProcess处理带管道的shell

    代码中需要调用shell 原写法为 QProcess proc new QProcess QString qCmd find name so print0 xargs 0 objdump x grep oE T 0 9 a f A F 4
  • 护网

    在HVV期间 蓝队主要就是通过安全设备看告警信息 后续进行分析研判得出结论及处置建议 在此期间要注意以下内容 内网攻击告警需格外谨慎 可能是进行内网渗透 1 攻击IP是内网IP 攻击行为不定 主要包括 扫描探测行为 爆破行为 命令执行等漏扫
  • 笑脸工具COORD批量转换2000大地到空间坐标

    数据格式txt 1 31 48 14 118687N 119 38 07 130943E 2 32 3 19 06731100008N 119 31 20 422269001200302E 3 31 50 31 89348499992000
  • 变频调速系统c语言编程,基于8098单片机的SPWM变频调速系统

    数字控制的交流调速系统所选用的微处理器 功率器件及产生PWM波的方法是影响交流调速系统性能好坏的直接因素 在介绍了正弦脉宽调制 SPWM 技术的基础上 设计了一种以8098单片机作为控制器 以智能功率模块IPM为开关器件的变频调速系统 通过
  • 小样本学习(Few-shot Learning)综述

    作者丨耿瑞莹 李永彬 黎槟华 单位丨阿里巴巴智能服务事业部小蜜北京团队 分类非常常见 但如果每个类只有几个标注样本 怎么办呢 笔者所在的阿里巴巴小蜜北京团队就面临这个挑战 我们打造了一个智能对话开发平台 Dialog Studio 以赋能第
  • [Flutter]封装了个Toast组件

    Flutter官方插件市场上已经有了很多成熟的Toast组件 如 fluttertoast 等等 使用了一年多的Flutter框架 一时兴起 自己封装了一个简单的Toast组件 注 本人觉得 自动关闭的时候 不宜使用 Navigator p
  • 西门子PLC S7-1200的硬件中断组织块简介

    西门子PLC S7 1200系列是一款中小型西门子PLC 可以在各种自动化项目中进行应用 S7 1200系列设计较为紧凑 经济性较好 而且指令功能较为强大 因此在各种自动化控制解决方案中有较广泛的应用 作为西门子PLC S7 200系列的升
  • [1218]hive之Map Join使用方法

    文章目录 介绍 mapjoin的使用方法 介绍 MAPJION会把小表全部加载到内存中 在map阶段直接拿另外一个表的数据和内存中表数据做匹配 由于在map端是进行了join操作 省去了reduce运行的时间 算是hive中的一种优化 如上
  • 开放原子训练营(第三季)inBuilder低代码开发实验室之探秘

    一 活动介绍 以开放原子训练营为主办方的inBuilder低代码实验室活动现已开启 参与者无论身居计算机业界 偏好低代码开发抑或是普通用户 均可在社区版inBuilder低代码开发平台 一款基于UBML开源项目的广泛适用的发行版 中尝试向导
  • ECMAScript2020 可选链操作符(?.)的应用

    一 前言 const programmer user lin department name 技术部 getSite return 在以前的语法中 想要获得深层次的属性或方法 如果不做前置校验的话 那么就很容易出现这种错误 这可能会导致你整
  • MFC 之 重绘按键Cbutton

    上次我们学习了如何美化对话框的界面 这次我们为上次的对话框添加两个按钮 一个是关闭按钮 另一个是最小化按钮 好 现在我们先看一下效果 是不是很难看 因为我们的对话框美化了 所以我们的按钮也要美化 因为采用贴图的方式来美化 所以 我先给出这两
  • 笔试面试算法经典--矩阵的最短路径和(Java)

    题目 给定一个矩阵m 从左上角开始每次只能向右或者向下走 最后到达右下角的位置 路径上所有的数字累加起来就是路径和 返回所有路径中最小的路径和 例子 给定m如下 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 路径1 3 1

随机推荐

  • 信号去噪 - 基于SVD实现数字信号降噪含Matlab源码

    信号去噪 基于SVD实现数字信号降噪含Matlab源码 介绍 信号处理中的一个重要问题是如何降噪 这在各种应用领域中都有非常重要的作用 奇异值分解 SVD 是一种广泛使用的信号处理技术 可以用于有效地降低信号噪声 本文将介绍如何使用SVD进
  • Elasticsearch 安装及启动【Windows】

    一 下载 Elasticsearch 官网下载地址 https www elastic co cn downloads past releases elasticsearch 选择自己所需版本进行下载 这里以Elasticsearch 8
  • 【操作系统】王道考研 p64-66 IO软件层次结构、IO核心子系统、假脱机技术(SPOOLing技术)

    IO软件层次结构 IO核心子系统 假脱机技术 SPOOLing技术 以下是IO软件层次结构的内容 知识总览 用户层软件 实现了与用户交互的接口 将用户的请求翻译为格式化的IO请求 并通过 系统调用 请求操作系统内核的服务 设备独立性软件 又
  • PyQt5 QTableWidget内容复制功能

    为了更快速的将QTableWidget的内容复制到剪贴板 只需重写这个控件的keyPressEvent event 废话不多说 直接上代码 复制功能 def keyPressEvent self event Ctrl C复制表格内容 if
  • 大语言模型浅探一

    目录 1 前言 2 GPT模型解码 3 InstructGPT 4 基于RWKV微调模型 4 1 RWKV简介 4 2 增量预训练 4 3 SFT微调 4 4 RM和PPO 5 测试 6 总结 1 前言 近来 人工智能异常火热 ChatGP
  • 如何把“自己的”网络中的conv2d替换为dcnv2

    1 dcnv2的实现测试了两种 一种是官方版dcnv2 git链接 https github com CharlesShang DCNv2 git 编译直接cd到DCNv2 然后 make sh即可 第二种是mmcv ops modulat
  • redis单机版部署

    目录 1 下载版本 2 上传解压 3 安装依赖包 4 进入redis目录 执行编译 5 创建相应目录 6 配置redis conf 7 启动redis 8 配置redis开机自启 1 下载版本 以下是我使用的版本 redis 4 0 1 链
  • 黑盒测试用例设计方法案例与练习题

    1 等价类 案例 登录功能 用户名和密码登录 以在线考试系统为例 年龄字段输入 2 网站注册页面年龄输入要求 某网站前台用户注册页面 其中有年龄字段的输入 要求输入1 150之间的正整数 输入条件 有效等价类 取值 编号 无效等价类 取值
  • 4.1.2 到底在规划、设计什么

    最后更新2021 08 19 以最简单 最朴素的语言说 规划 设计就是在拼凑一个框架 虚拟填补小说的事实 让最后一切发生的合情合理 顺乎自然 没有例外 规划 不能将悲剧的结局变成喜剧收尾 但依靠编剧的功底 能够将剧情玩弄于股掌之间 让每位观
  • 天梯赛省赛选拔赛复盘

    很可惜的一场比赛 两小时调H题没调出来T T 如果调出来就能被选上了 无限Sad 意难平 希望蓝桥杯不留遗憾 文章目录 A题 蜗牛与井 签到 B题 火力覆盖 贪心 数学 C题 ZZ的函数 D题 自然溢出 思维 数学 E题 小y的棋子 F题
  • Groovy语言详解

    一 Groovy 概述 Groovy是一种基于Java平台的面向对象语言 Groovy 1 0于2007年1月2日发布 其中Groovy 2 4是当前的主要版本 Groovy通过Apache License v 2 0发布 Groovy中有
  • apt-get

    问题 如何查看已经安装的软件 如何确定一个软件是否已经安装 目前常用的 更新本机中的数据库缓存 sudo apt get update 查找包含部分关键字的软件包 sudo apt cache search lt 你要查找的name gt
  • 【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

    AI视野 今日CS NLP 自然语言处理论文速览 Tue 19 Sep 2023 showing first 100 of 106 entries Totally 106 papers 上期速览 更多精彩请移步主页 Daily Comput
  • 数据分析综述

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 关注 关注必回关 了解过数据分
  • Python random.seed() random.sample()函数使用

    random seed 0 作用 使得随机数据可预测 即只要seed的值一样 后续生成的随机数都一样 一 不设置seed import random list 1 2 3 4 5 6 7 8 9 10 a random sample lis
  • Gensim构造词向量模型

    1 下载维基百科data https dumps wikimedia org zhwiki 20190820 zhwiki 20190820 pages articles xml bz2 也可以下下面的小的 2 将bz2内容提取出来 确保安
  • Qt 图形特效(Graphics Effect)介绍

    本站所有文章由本站和原作者保留一切权力 仅在保留本版权信息 原文链接 原 文作者的情况下允许转载 转载请勿删改原文内容 并不得用于商业用途 谢谢合作 原文链接 Qt 图形特效 Graphics Effect 介绍 QGraphicsEffe
  • nginx路由匹配规则解析

    一 规则分类 精确匹配 优先级最高 精确前缀匹配 优先级仅次于 区分大小写的正则匹配 优先级次于 不区分大小写的正则匹配 优先级次于 uri 普通前缀匹配 优先级次于正则 通用匹配 优先级最低 二 规则详解 精确匹配 精确匹配使用 表示 n
  • java如何计算程序运行时间

    long startTime System currentTimeMillis 获取开始时间doSomething 测试的代码段long endTime System currentTimeMillis 获取结束时间System out p
  • yii2 自动引入php文件,composer 自动载入的四种方式

    Composer 是PHP的一个包依赖管理工具 类似Ruby中的RubyGems或者Node中的NPM 它并非官方 但现在已经非常流行 此文并不介绍如何使用Composer 而是关注于它的autoload的内容吧 对于第三方包的自动加载 C