Composer 的自动加载机制
Composer 的自动加载机制
Composer
提供了四种自动加载方式,分别是 PSR-0
、PSR-4
、生成 classmap
以及之间包含 files
。
PSR-0 方式
PSR-0
方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了。 但是,因为现在的主流 PHP
框架都已经实现了 PSR-0
方式,所以 Composer
仍然向下兼容。按照 PSR-0
的规则,当加载 User\Info
这个类的时候,那么会去寻找 src/User/Info.php
,最后这个配置会以 Map
的形式,写入生成的 vendor/composer/autoload_namespaces.php
中。
"autoload": {
"psr-0": {
"User\\": "src/",
}
}
PSR-4 方式
PSR-4
方式时 Composer
推荐使用的一种方式,同时也是 PSR-0
的替代方式。PSR-4
更容易使用及有更为简便的目录结构。当自动加载 User/Info
这个类的时候,那么会去寻找 src/User/Info
这个文件。PSR-4 的配置会被转换成 namespace
为 Key
,DIR PATH
为 Value
的 Map
的形式,并写入生成的 vendor/composer/autoload_namesapce.php
中。
"autoload": {
"psr-4": {
"User\\": "src/",
}
}
classmap 方式
classmap
方式是通过配置指定的目录或文件,然后在 composer install
或 update
的时候。会扫描指定目录下的 .php
或 .inc
文件中的类到指定文件路径的映射,并写入生成的 vendor/composer/autoload_classmap.php
文件中。 假设:src
下有一个 BaseController
类,那么在 autoload_classmap.php
文件中,就会生成这样的配置:BaseController => $baseDir . '/src/BaseController.php'
。
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
files 方式
files
方式是手动指定供直接加载的文件。例如:有一个全局的 helper
函数,可以放到一个 helper
文件中直接进行加载。会生成一个数组包含配置中指定的 files
,然后写入生成的 vendor/autoload_files.php
"autoload": {
"files": ["src/app/helper.php"]
}
最后
在配置 composer.json
完成之后,就直接运行 composer install
。然后在项目的入口文件中,引入 require 'vendor/autoload.php'
就可以愉快的使用相关的类库了。
Composer 的自动加载机制的更多相关文章
- 详解composer的自动加载机制
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码. 安装composer composer ...
- composer的自动加载机制(autoload)
composer的出现真是让人们眼前一亮,web开发从此变成了一件很『好玩』的事情,开发一个CMS就像在搭积木,从packagist中取出『积木』搭建在自己的代码中,一点一点搭建出一个属于自己的王国. ...
- Yii2的深入学习--自动加载机制
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 ...
- Yii2的深入学习--自动加载机制(转)
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 ...
- composer 实现自动加载原理
简介 一般在框架中都会用到composer工具,用它来管理依赖.其中composer有类的自动加载机制,可以加载composer下载的库中的所有的类文件.那么composer的自动加载机制是怎么实现的 ...
- 深入解析 composer 的自动加载原理 (转)
深入解析 composer 的自动加载原理 转自:https://segmentfault.com/a/1190000014948542 前言 PHP 自5.3的版本之后,已经重焕新生,命名空间.性状 ...
- PHP 命名空间与自动加载机制介绍
include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 requ ...
- 深入解析 composer 的自动加载原理
PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演 ...
- thinkphp5源码剖析系列1-类的自动加载机制
前言 tp5想必大家都不陌生,但是大部分人都停留在应用的层面,我将开启系列随笔,深入剖析tp5源码,以供大家顺利进阶.本章将从类的自动加载讲起,自动加载是tp框架的灵魂所在,也是成熟php框架的必备功 ...
随机推荐
- linux-dns-11
1网卡设置配置文件里面DNS服务器地址设置,2.系统默认DNS服务器地址设置.3,hosts文件指定 生效顺序是: 1 hosts文件 ---- 2 网卡配置文件DNS服务地址 ---3 /etc/r ...
- Redis配置文件全解
基本配置 port 6379 # 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接. daemonize no #是否以后台进程启动 datab ...
- 基于AdminLTE的jquery头像更新
最近在写实验室管理系统中的个人信息模块,上边要求实现更改头像功能.百度了一大堆,无实用的.(要么各种币) 本文介绍的只是实现了简单功能(毕竟现在初学阶段) 需要引用文件,顺序也不能错. <scr ...
- 解决vuex保存的数据刷新页面时清空
参考文章: vuex中store保存的数据,刷新页面会清空 主要解决代码: 1.更改store文件下index文件state的定义 const store = new Vuex.Store({ sta ...
- 大数据笔记(二十二)——大数据实时计算框架Storm
一. 1.对比:离线计算和实时计算 离线计算:MapReduce,批量处理(Sqoop-->HDFS--> MR ---> HDFS) 实时计算:Storm和Spark Sparki ...
- k8s中pod内dns无法解析的问题
用k8s创建了pod,然后进入pod后,发现在pod中无法解析www.baidu.com,也就是出现了无法解析外面的域名的问题.经过高人指点,做个小总结.操作如下. 一,将CoreDNS 的Confi ...
- HBuilder使用逍遥Android模拟器
Microvirt HBuilder使用逍遥Android模拟器 1.逍遥模拟器安装 地址: 点我下载 2.连接注意事项 a. 复制adb等文件 HBuilder安装目录中tools文件夹下的三个文件 ...
- leetcode-mid-Linked list- 200. Number of Islands¶
mycode 57.92% class Solution(object): def numIslands(self, grid): """ :type grid: Li ...
- C# WPF 漂亮的loading 效果
<UserControl x:Class="TestLoadPic.Loading" xmlns="http://schemas.microsoft.com/win ...
- 【C++进阶】 to_string,stringstream
to_string函数主要进行以下一些参数转换为string stringstream,位于<sstream>库中 https://blog.csdn.net/jllongbell/art ...