百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

larveral或thinkphp框架开发之composer入门

bigegpt 2024-10-04 14:06 7 浏览

composer介绍

composer是php的一个依赖管理工具,在项目中声明所依赖的外部工具库,会自动安装这些工具库及所依赖的库文件。

对我等初阶工程狮来说,就是拉别人的代码,用别人的库,一个进阶版的cp命令 <( ̄︶ ̄)>

安装流程

curl -sS https://getcomposer.org/installer | php 

然后当前文件夹下应该会有一个composer.phar文件,然后把它放到全局路径里或者在PATH里加入它的位置

mv composer.phar /usr/local/bin/composer

windows用户添加到环境变量里的PATH中

运行命令看看安装成功没有

composer --version
//输出: Composer version 1.5.6 2017-12-18 12:09:18
//输出这种样子的就是成功了

也可以看个图,直接运行 composer命令:

composer

介绍下composer.json文件

{
 "name": "HiPHP",
 "description": "hi world",
 "type": "Framework",
 "keywords": [
 "PHP",
 "PHP FRAMEWORK"
 ],
 "require": {
 "php": ">5.3.0",
 "catfan/Medoo": "*",
 "monolog/monolog": "1.2.*"
 },
 "repositories": {
 "packagist": {
 "type": "composer",
 "url": "https://packagist.phpcomposer.com"
 }
 }
}
  1. 这部分是一些自己项目的介绍,名称描述类型关键字
  2. 加载的第三方库,包括第三方库的版本
  3. 国内的镜像服务,由于众所周知的原因,使用国外的会很慢很卡,具体方法查看composer国内镜像的官网介绍。 https://pkg.phpcomposer.com/
  4. 引入一个新的包
  5. 搞个例子,我们还缺少一个正式的日志功能,php有个很牛x的开源日志库,我们这就使用composer把他加载进来。(开源就是光明正大让你copy过来的写好了的代码,然而cp太麻烦,于是大佬们就发明了composer一次行复制过来)。

这是github地址

https://github.com/Seldaek/monolog

这是是我们之前 composer.json 文件中requeire部分

"require": {
 "php": ">5.3.0",
 "catfan/Medoo": "*"
 },

现在加上monolog的部分

 "require": {
 "php": ">5.3.0",
 "catfan/Medoo": "*",
 "monolog/monolog": "1.2.*"
 },

然后我们执行 composer update

打印出来的数据没问题,我们去看看vender里的文件,多了这么一个monolog的文件夹。

现在我们在代码里测试一下,这是修改之后的testCtrl控制器

namespace controller;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class testCtrl
{
 public function index()
 {
 $log = new Logger('name');
 $log->pushHandler(new StreamHandler('my.log', Logger::WARNING));
 $log->warn('warn警告');
 $log->err('err错误');
 }
}

运行之后根目录下多出来一个文件,my.log,打开里边有这样的内容。

另一种加载第三方库的方式

还可以直接跑命令composer require。

比如我们还是添加这个monolog库,把我们刚才修改的composer.json文件里的引入monolog的这一行删除掉,然后运行 composer update,会发现刚才自动下载的monolog文件夹消失了,回到了最初的状态。

然后我们运行

composer require monolog/monolog

看输出:

看看composer.json文件,发现已经多出了一行

"monolog/monolog": "^1.24"

版本详细到了1.24,比我们最开始指定的要详细一些,文件夹也出来了,代码也可以正常调用。

关于composer.lock

看一下我们的composer.lock,这是个运行了composer install或者update之后就存在的文件。

composer.json是用来配置我们要引入的库,那这个composer.lock是用来干嘛的呢?答案是,用来精确指定版本。

比如我们一开始手动添加版本的时候,添加的是1.2.*,这样我们在拉取的时候,可能会拉去1.2.1或者1.2.4,但加入他官方的版本升级了,之后使用这个项目的人,install的时候拉去的可能就是1.2.5了,说不定有一些不兼容的问题。于是compsoer便设计了一个lock文件,lock文件里会有完整的包信息和版本号。

关于compser.lock的具体情景:

  1. composer install 的时候会首先检查lock文件是否存在,如果存在,就按照composer.lock文件指定的版本,取拉取对应的版本,如果不存在,就拉取默认的版本,并且创建composer.lock文件
  2. 如果在composer.json文件中修改了版本号,一定要执行composer update,这样,composer.lock文件就会被更新。
  3. 团队开发的时候,一定要把composer.lock文件上传到仓库里,这样才能保证团队里的每一个成员的版本都是一致的。

composer常用命令汇总

  1. composer install
  2. composer update
  3. composer require 库名 [版本] 引入新库或者修改原来库版本
  4. composer selfupdate composer自身更新
  5. composer self-update --rollback 更新之后回退到上次的版本
  6. composer create-project 从现有的包里创建一个新的项目 如:composer create-project topthink/think=5.0.* tp5 --prefer-dist 就可以直接下载一个thinkphp5.0的代码
  7. composer search 包名 比如 composer search monolog就可以搜索composer的官方网站 https://packagist.org/ 上的有的包
  8. composer config composer配置命令,比如全局设置composer的国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com

相关推荐

C#.NET Autofac 详解(c# autoit)

简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注...

webapi 全流程(webapi怎么部署)

C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...

.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

一:背景1.讲故事上一篇我们讲到了注解特性,harmony在内部提供了20个HarmonyPatch重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决95%...

C# 使用SemanticKernel调用本地大模型deepseek

一、先使用ollama部署好deepseek大模型。具体部署请看前面的头条使用ollama进行本地化部署deepseek大模型二、创建一个空的控制台dotnetnewconsole//添加依赖...

C#.NET 中间件详解(.net core中间件use和run)

简介中间件(Middleware)是ASP.NETCore的核心组件,用于处理HTTP请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。...

IoC 自动注入:让依赖注册不再重复劳动

在ASP.NETCore中,IoC(控制反转)功能通过依赖注入(DI)实现。ASP.NETCore有一个内置的依赖注入容器,可以自动完成依赖注入。我们可以结合反射、特性或程序集扫描来实现自动...

C#.NET 依赖注入详解(c#依赖注入的三种方式)

简介在C#.NET中,依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,IoC),以降低代码耦合、提高可...

C#从零开始实现一个特性的自动注入功能

在现代软件开发中,依赖注入(DependencyInjection,DI)是实现松耦合、模块化和可测试代码的一个重要实践。C#提供了优秀的DI容器,如ASP.NETCore中自带的Micr...

C#.NET 仓储模式详解(c#仓库货物管理系统)

简介仓储模式(RepositoryPattern)是一种数据访问抽象模式,它在领域模型和数据访问层之间创建了一个隔离层,使得领域模型无需直接与数据访问逻辑交互。仓储模式的核心思想是将数据访问逻辑封装...

C#.NET 泛型详解(c# 泛型 滥用)

简介泛型(Generics)是指在类型或方法定义时使用类型参数,以实现类型安全、可重用和高性能的数据结构与算法为什么需要泛型类型安全防止“装箱/拆箱”带来的性能损耗,并在编译时检测类型错误。可重用同一...

数据分析-相关性分析(相关性 分析)

相关性分析是一种统计方法,用于衡量两个或多个变量之间的关系强度和方向。它通过计算相关系数来量化变量间的线性关系,从而帮助理解变量之间的相互影响。相关性分析常用于数据探索和假设检验,是数据分析和统计建模...

geom_smooth()函数-R语言ggplot2快速入门18

在每节,先运行以下这几行程序。library(ggplot2)library(ggpubr)library(ggtext)#用于个性化图表library(dplyr)#用于数据处理p...

规范申报易错要素解析(规范申报易错要素解析)

为什么要规范申报?规范申报是以满足海关监管、征税、统计等工作为目的,纳税义务人及其代理人依法向海关如实申报的行为,也是海关审接单环节依法监管的重要工作。企业申报的内容须符合《中华人民共和国海关进出口货...

「Eurora」海关编码归类 全球海关编码查询 关务服务

  海关编码是什么?  海关编码即HS编码,为编码协调制度的简称。  其全称为《商品名称及编码协调制度的国际公约》(InternationalConventionforHarmonizedCo...

9月1日起,河南省税务部门对豆制品加工业试行新政7类豆制品均适用投入产出法

全媒体记者杨晓川报道9月2日,记者从税务部门获悉,为减轻纳税人税收负担,完善农产品增值税进项税额抵扣机制,根据相关规定,结合我省实际情况,经广泛调查研究和征求意见,从9月1日起,我省税务部门对豆制品...