php composer 使用 以及 psr0和psr4的真正区别
composer 使用
项目和库之间唯一的区别是,你的项目是一个没有名字的包
包名不区分大小写,但惯例是使用小写字母,并用连字符作为单词的分隔
入门比较好资源:
官网适合读一遍 https://docs.phpcomposer.com/02-libraries.html
本地包创建 https://segmentfault.com/a/1190000010891972
模块化介绍 https://laravel-china.org/articles/5333/modular-development-of-php-based-on-composer
psr0和psr4的真正区别
读完官方原文https://www.php-fig.org/psr/psr-0/ 和 https://www.php-fig.org/psr/psr-4/ 发现没区别 本质上真的没区别都是说命名空间对应到目录,
0比4多了 一条类名的_下划线转换成目录。
那么4比0多了一个 命名空间前缀和目录的替换关系 当加载类的时候类名空间指定的前缀会被替换成路径再加上后面的子空间和类名 构成实际加载地址。
而0没有这个对应关系。命名空间直接转换为目录再加上指定的目录前缀构成实际的加载地址。
psr4
在composer中的实践,我理解大概是这样的psr4中在composer.json里面配置的映射关系 composer install的时候写入vendor/composer/autoload_psr4.php
供加载使用。
{
"autoload": {
"psr-4": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": ""
}
}
}
psr0
在composer中的实践,我理解大概是这样的psr0中在composer.json里面配置的映射关系 composer install的时候写入vendor/composer/autoload_namespaces.php
供加载使用。
{
"autoload": {
"psr-0": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": "src/",
"Vendor_Namespace_": "src/"
}
}
}
纤细看下这里 https://docs.phpcomposer.com/04-schema.html#PSR-0
重点
包名和命名空间可以不一样。
我理解vendor会根据composer install vendorname/pkname命令的 vendorname/pkname 自动生成vendorname/pkname目录把代码
下载到此目录。
https://github.com/guzzle/promises 空间名称和包名就不一样
php composer 使用 以及 psr0和psr4的真正区别的更多相关文章
- composer 类加载器,对 <PSR-4的风格>、<PSR-0的风格>、<PEAR的风格> 风格的类的加载
class ClassLoader { // ... /** * composer 类加载器,对 <PSR-4的风格>.<PSR-0的风格>.<PEAR的风格> 风 ...
- PSR-0到PSR-4编程规范
PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是:www.php-fig.org.就是这个联盟组织发明和创造了PSR-[0-4] ...
- PHP规范PSR0和PSR4的理解
一.PSR0简介 下文描述了若要使用一个通用的自动加载器(autoloader),你所需要遵守的规范: 一个完全标准的命名空间(namespace)和类(class)的结构是这样的:\<Vend ...
- psr-0和psr-4命名规范(未完)
这些命名规范都是为为自动加载服务(避免项目中有很多的include和require) psr-0: 1.命名空间必须与绝对路径一致 2.类名首字母必须大写 3.除入口文件外,其他“.php”必须只有一 ...
- composer命令介绍之install和update及其区别
composer 是 php 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 然而,对于如何『安装他们』,新手可能并不清楚.网上的答案有的说 composer in ...
- 【Composer】实战操作一:使用库
前言 前面我们简单介绍了composer的安装 以及 如何安装库 本文目的 主要实战讲解如何使用库,主要是PSR-0 和 PSR-4的区别,以及如何在代码中引用.关于PSR-0和PSR-4的具体区别可 ...
- Composer实现PHP中类的自动加载
本篇博客承接上一篇,学习一下Composer实现的PHP的类的自动加载方式.首先说明一下,Composer是PHP针对PHP语言的第三方的依赖管理工具,将工程所用到的依赖文件包含在composer.j ...
- Composer使用
是什么 如果你知道yum.apt-get.npm.bower等命令中的一种或者多种,那么,你也能很快知道composer是什么了.没错,它就是PHP里快速安装类库的.平时,我们安装一个PHP类库,需要 ...
- 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备
『Composer 一统天下的时代已经到来!』——白岩松 “一个时代结束了,另一个时代开始了.” Framework Interoperability Group(框架可互用性小组),简称 FIG,成 ...
随机推荐
- input标签让光标不出现
<input class="red" readonly unselectable="on" > input点击变为搜索框,用form包住绑定搜索事 ...
- 启动tomcat 报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[root@localhost META-INF]# systemctl start tomcat Job for tomcat.service failed because the control ...
- 1.1.1 vue-cli脚手架工具
参考文档: windows下npm安装vue(以下教程大部分都是参考这篇博客的,按照着这篇博客自己实现了一遍) npm安装vue-cli脚手架 一.前言 npm:nodejs下的包管理器,安装好nod ...
- PHP中封装Redis购物车功能
<?php // 服务层 namespace Common\Service; use Vendor\Func\Red; class CartService extends CommonServi ...
- 字符串--C++系列
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是 ...
- 剖析Hadoop和Spark的Shuffle过程差异
一.前言 对于基于MapReduce编程范式的分布式计算来说,本质上而言,就是在计算数据的交.并.差.聚合.排序等过程.而分布式计算分而治之的思想,让每个节点只计算部分数据,也就是只处理一个分片,那么 ...
- leecode第八十九题(格雷编码)
class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ...
- 【C#】 基于ArcFace 2.0—视频人脸识别Demo
使用的虹软人脸识别技术 啥话不说,不用跪求,直接给下载地址:http://common.tenzont.com/comdll/arcface2demo.zip(话说附件的大小不限制,还是说我的文件太大 ...
- Codeforces 1077 F2 - Pictures with Kittens (hard version)
F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码: #pragma GCC optimize(2) #pragma GCC optim ...
- Codeforces 1005 E2 - Median on Segments (General Case Edition)
E2 - Median on Segments (General Case Edition) 思路: 首先我们计算出solve(m):中位数大于等于m的方案数,那么最后答案就是solve(m) - s ...