php包管理器composer浅析,thinkphp框架原理浅析

本文介绍了PHP的包管理器Composer,包括其功能(安装和管理PHP组件)、自动加载机制以及如何使用`composer.json`和`composer.lock`进行版本锁定。还探讨了ThinkPHP框架中的配置文件原理和静态代理(Facade)的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

composer是什么?

composer是php的包管理器,很多语言都有包管理器,可以很好的引入其他人写的代码,而对自己原有的代码却不产生负面的影响,实现插拔式的开发体验.

composer能干什么?

Packagist是查找PHP组件的社区,Composer则是安装PHP组件的工具.
所以首先composer能方便的安装php组件(库)
例如:

composer require guzzlehttp/guzzle

composer使用浅析

项目安装composer之后,会在根目录生成一个vendor文件夹,composer相关的东西都会在这里面,同时安装的其他组件也都会在这里面,需要注意的是里面有一个autoload.php文件,这个文件必须在你项目的入口文件中引入,这是composer能实现神奇功能的最主要原因,引入这个文件意味着composer可以为你的项目工作了.

//使用composer自动加载器,会按需自动加载引入的组件

require 'vendor/autoload.php';

安装完成后,会在根目录下生成composer.json和composer.lock文件

composer.lock文件中会列出项目使用的所有PHP组件,以及组件的具体版本号,这其实是锁定了项目,让项目只能使用具体版本的PHP组件。这样的好处是,composer会下载这个文件中列出的具体版本,而不管Packagist中可用的最新版本是多少,你应该把composer.lock文件纳入版本控制,这样让团队成员使用的PHP版本和你一样,如果本地开发和服务器使用的PHP组件版本相同,可以尽量降低由组件版本不同导致的bug。

如果确实要下载最新版本的组件并更新composer.lock,可以使用composer update命令。

composer利器,自动加载

以前我们一个文件里面引入另一个php文件的时候都需要用require或者include引入,如果引入很多会让代码非常臃肿,而且可能重复,问题特别多

使用composer之后会自动加载,直接使用就行了,使用use引人命名空间使用就行了.

但是php文件中的namespace还是要自己手动写,而且任何项目中,php文件的文件夹路径和命名空间应该保持一致,这样代码可读性会大大增强,开发效率也会更高.

一般都不要写命名空间的php文件,也就是成为了全局的命名空间,会首先被加载,当做配置文件使用,或者公共方法.这是php 的特性,很多框架都在这里写配置文件,比如thinkphp,有一个config文件夹,里面的文件就都没写命名空间,

thinkphp框架原理浅析

config文件原理

此框架内,会找到config文件夹下面的文件,然后读取里面的内容,获取到配置内容后保存到全局内存中,
比如app.php里面的数组中定义了 ‘aaa’=1,获取的时候要用Config::get(‘配置文件名.配置项键名称’)获取,
这里使用的config是\think\facade\Config

Facade类

facade是一种静态代理机制,可以让原来类的普通方法,使用静态调用,这样写起来就非常方便,不需要先实例化一个Class,而是直接用Class::fucName的方法来调用,thinkphp框架内部很多类都实现了静态代理,简单的说,当使用一个类的时候,如果有facade下面的类名,就用这个,而不是非facade目录下的class,这样能让使用更加简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值