<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>composer on Leanku</title>
    <link>https://blog.leanku.com/categories/composer/</link>
    <description>Recent content in composer on Leanku</description>
    <image>
      <url>https://blog.leanku.com/papermod-cover.png</url>
      <link>https://blog.leanku.com/papermod-cover.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Tue, 15 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.leanku.com/categories/composer/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>composer</title>
      <link>https://blog.leanku.com/post/php/composer/</link>
      <pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://blog.leanku.com/post/php/composer/</guid>
      <description>composer Composer是 PHP 用来管理依赖（dependency）关系的工具。你可以在自己的项目中声明所依赖的外部工具库（libraries），Composer 会帮你安装这些依赖的库文件。
一、Composer 基础概念 Composer 是 PHP 的依赖管理工具，它通过定义项目所需的依赖包及版本，自动安装和管理这些依赖，确保项目在不同环境下都能稳定运行。其核心概念主要包括以下几个方面：
1.1 包（Package） 包是 Composer 管理的基本单元，它可以是一个 PHP 类库、框架组件，或是某个功能模块。比如用于 HTTP 请求处理的 Guzzle，以及知名的 PHP 框架 Laravel、Symfony 等，都可以看作是 Composer 包。这些包被发布在 Packagist 等包仓库中，方便开发者获取使用。
1.2 composer.json 与 composer.lock composer.json是项目的依赖配置文件，开发者在其中定义项目所需的依赖包及其版本约束。例如，若要在项目中使用 PHPUnit 进行单元测试，可在composer.json添加 &amp;ldquo;phpunit/phpunit&amp;rdquo;: &amp;ldquo;^9.5&amp;rdquo; ，表示使用 PHPUnit 9.5 及以上版本，但低于 10.0 版本。​
composer.lock则是锁定依赖包具体版本的文件。当执行composer install或composer update时，Composer 会将实际安装的依赖包版本记录在composer.lock中。下次在其他环境安装依赖时，该文件能确保安装的依赖包版本与之前完全一致，避免因版本差异导致项目出现兼容性问题 。
1.3 包仓库（Repository）​ 包仓库是存储 Composer 包的地方，默认情况下，Composer 使用 Packagist 作为官方包仓库，它汇聚了海量的 PHP 开源包。除了 Packagist，开发者还可以搭建私有包仓库，用于管理内部开发的私有包，或者使用其他公共仓库，拓展包的来源。 packagist仓库地址
二、安装composer #下载安装脚本 － composer-setup.php － 到当前目录。 php -r &amp;#34;copy(&amp;#39;https://install.phpcomposer.com/installer&amp;#39;, &amp;#39;composer-setup.</description>
    </item>
    
    <item>
      <title>Composer 自动加载原理</title>
      <link>https://blog.leanku.com/post/php/composer-%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD%E5%8E%9F%E7%90%86/</link>
      <pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://blog.leanku.com/post/php/composer-%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD%E5%8E%9F%E7%90%86/</guid>
      <description>Composer 自动加载原理 Composer 的自动加载本质是 动态加载类文件，它实现了“按需加载”的机制，避免了手动 require 每个类文件。
一、Composer 自动加载的核心 PHP 提供了 spl_autoload_register() 函数：
spl_autoload_register(function ($class) { require &amp;#39;src/&amp;#39; . str_replace(&amp;#39;\\&amp;#39;, &amp;#39;/&amp;#39;, $class) . &amp;#39;.php&amp;#39;; }); 当你第一次使用一个类时，PHP 会调用这个函数。 $class 是你使用的类全名（包括命名空间）。 函数里通过规则找到对应文件并 require。 Composer 自动加载，就是在这个基础上做了 规范化管理。
二、Composer 生成的自动加载文件 安装依赖后，Composer 会生成：
vendor/autoload.php vendor/composer/autoload_*.php vendor/autoload.php：入口文件，只需 require 一次。 vendor/composer/autoload_psr4.php：记录 PSR-4 命名空间 → 文件路径映射。 vendor/composer/autoload_classmap.php：记录 类名 → 文件路径，用于 classmap 加速加载。 vendor/composer/autoload_files.php：记录需要立即加载的文件（如全局函数库）。 vendor/autoload.php 的核心逻辑：
require __DIR__ . &amp;#39;/composer/autoload_real.php&amp;#39;; return ComposerAutoloaderInit::getLoader(); ComposerAutoloaderInit::getLoader() 会：
初始化一个 ClassLoader 实例。 根据配置注册 PSR-4、PSR-0、classmap、files 自动加载函数到 PHP。 调用 spl_autoload_register() 注册这些函数。 三、PSR-4 自动加载机制 PSR-4 是 Composer 默认的推荐机制。 假设 composer.</description>
    </item>
    
  </channel>
</rss>
