Composer基础使用 SDK包初始化

发布于:2024-03-02 ⋅ 阅读:(61) ⋅ 点赞:(0)

Composer 的工作原理

我们在使用 Composer 之前我们得了解一下它的实现原理,它主要由三个部分组成:命令行工具、包仓库、代码库

Packagist

它是官方仓库,也就是我们平常说的 Composer 源,它的作用是存储这些包的信息,版本,代码来源,依赖,作者,主页等信息。官网是 packagist.org/, 你也可以将自己的包发布在上面,这样 Composer 工具就能搜索与安装你的包了,后面我们会具体介绍发布流程。

Repository

代码仓库,Packagist 支持公开与私有仓库,通常是 GitHub 作为代码仓库,当然也可以是 BitBucket 或者 GitLab

Vendor directory

我们的 Composer 依赖包都统一安装在项目的 vendor 目录下,其中还有 vendor/composer 目录用于存储依赖包的一些基本信息,比如命名空间等。

Composer创建SDK

初始化Composer

确保在项目目录中初始化Composer。如果你还没有Composer,请先安装它。


composer init

当你运行composer init命令时,会开始一个交互式过程,系统将询问你有关项目的一些信息。以下是可能会被询问的问题以及应该如何回答:

  1. Package name (vendor-name/package-name) [默认为当前目录名]:

  1. 这是你的SDK包的名称。默认情况下,Composer会使用当前目录名,但你可以根据需要更改。

  1. Description [默认为None]:

描述你的SDK的简短说明。

  1. Author [默认为None]:

输入你的名字和邮箱。

  1. Minimum Stability [默认为stable]:

你可以选择包的最低稳定性。大多数情况下,保持默认即可。

  1. Package Type [默认为library]:

通常是library,如果你的项目是一个应用程序,则可能选择project

  1. License [默认为MIT]:

选择你打算使用的许可证类型。

  1. Would you like to define your dependencies (require) interactively? [yes]:

是否要交互式地定义依赖项。选择“yes”会引导你添加依赖项。

  1. Search for a package:

在这里,你可以搜索并选择你想要添加的依赖项。例如,你可以搜索"guzzlehttp/guzzle"以添加 Guzzle HTTP 客户端。

  1. Would you like to define your dev dependencies (require-dev) interactively? [yes]:

是否要交互式地定义开发环境下的依赖项。选择“yes”会让你添加开发环境下的依赖项,例如测试框架或代码检查工具。

  1. Search for a package (for dev):

类似于第 8 步,在这里你可以搜索并添加开发环境下的依赖项。

完成这些步骤后,Composer 将根据你提供的信息生成一个composer.json文件,其中包含了你项目的基本信息、依赖项等。这个文件会被用来管理你的项目所需的各种依赖项以及包的配置信息。

定义依赖项

composer.json文件中,定义你的SDK的依赖项。这可能包括SDK的名称、版本号和其他信息。

{
    "name": "your-vendor-name/your-sdk-name",
    "description": "Description of your SDK",
    "require": {
        "php": "^7.3",
        // 你的依赖项
    },
    "autoload": {
        "psr-4": {
            "YourNamespace\\": "src/"
        }
    }
}

确保将YourNamespace替换为你想要的命名空间。

SDK目录结果


├── CHANGELOG.md
├── LICENSE
├── Makefile
├── README.md
├── composer.json
├── composer.lock
├── docs
│   ├── README.md
├── phpunit.xml
├── scripts
│   └── php_lint.sh
├── src
│   └── Support
│       └── helpers.php
└── tests
    ├── AbstractTestCase.php
    ├── Feature
    ├── Unit
    │   └── ExampleTest.php
    └── bootstrap.php

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到