dedicatedcloud/tempconv

V1.0.0 2024-05-13 04:47 UTC

This package is auto-updated.

Last update: 2024-09-13 05:44:41 UTC


README

Composer 包

Downloaded on: 13 May 2024

试用应用

免费托管

Run your Node.js, Python, Go, PHP, Ruby, Java, and
Scala apps in three easy steps. Connect them to your
favorite databases. Pay only for the resources you use.
Free trial

代码重用带来了依赖管理的问题,这在历史上一直是一个相当手动且容易出错的流程。幸运的是,近年来,大多数编程语言通过引入各种依赖管理工具来解决此问题。在 PHP 生态系统 中,Composer 由于其易用性、灵活性和广泛采用而成为标准。

尽管 Composer 是为依赖管理而构建的,但你也可以用它来完成诸如

Autoloading: Automatically load classes and functions from external libraries to make
them readily accessible from your code and simplify the process of integrating external
code into your project.
Code generation: Generate boilerplate code for your project, such as configuration files
or other commonly used code snippets to speed up the development process and
ensure consistency.
Scripting: A built-in scripting system can automate common tasks, such as running
tests or generating documentation from your code base. This can help streamline your
development workflow and reduce manual work.

本教程将逐步指导您创建自己的 Composer 包并将其发布到 Packagist,这是一个全球开发者可以在自己的项目中使用的 PHP 包存储库。

Composer 如何工作?

首先,让我们确保我们理解 Composer。简单来说,Composer 通过使用一个 composer.json 文件来工作,该文件包含 PHP 项目的依赖定义。它从集中式存储库中查找这些包,然后使用包存储库自动下载和安装这些依赖项。

假设您已经在 PHP 工作环境中安装了 Composer,以下是它的依赖项下载和安装过程:

  1. 在项目的根目录中定义 composer.json 文件中的项目所需依赖项。该文件包括有关所需库及其版本的信息以及这些库的任何其他配置设置或依赖项。
  2. 使用诸如 install(安装所需依赖项)、update(更新现有依赖项)和 require(将新依赖项添加到 composer.json 文件)之类的命令在 Composer 中解决依赖项。运行命令时,Composer 会读取 composer.json 文件以确定所需依赖项,检查适合您 PHP 环境的每个依赖项的最新版本,然后检查任何冲突或版本约束。
  3. Composer 将所需的依赖项(包括库)下载并安装到项目的 vendor 目录中。Composer 创建一个 composer.lock 文件,记录已安装依赖项的确切版本。
  4. Composer 设置一个自动加载器,它自动加载安装的依赖项中的类和函数。这使得在项目中使用安装的库变得容易,无需手动包含每个文件。

简而言之,Composer 简化了 PHP 项目的依赖项管理,使得安装、更新和使用外部库和框架变得容易。

创建和发布 Composer 包

本教程向您展示了如何创建一个简单的 PHP 库 tempconv,该库将摄氏温度转换为华氏温度,反之亦然,并在最后将其作为 Composer 包发布。

先决条件

在开始之前,您需要准备以下几件事情

PHP and Composer installed properly on your system At the time of writing, the latest
Composer version is v2.6.6, but these instructions should work with any v2 variant.
A GitHub account to create a repository for hosting your code.
A Packagist account to publish your library.

创建项目仓库

为本次教程创建自己的 GitHub 仓库,您可以将完成的库代码和文件推送到其中。

— Creating the project repository on GitHub.

本教程使用项目名称 tempconv。在描述字段中提供有关应用程序的简要说明。勾选添加 README 文件复选框,选择为添加 .gitignore 选项的 Composer 模板,并选择您选择的许可证——本教程使用 MIT 许可证。最后,单击创建仓库。

克隆仓库

将您刚刚创建的仓库克隆到本地计算机上。不要忘记在此处以及在整个教程中替换 URL 为您自己的 URL

$ git clone https://github.com/rexfordnyrk/tempconv.git

这将在当前工作目录中创建一个名为 tempconv 的目录。此时,它仅包含 README.md、LICENSE 和 .gitignore 文件,但您也会在这里创建包文件。

创建您的PHP库

在您的项目目录中,添加一个名为TemperatureConverter.php的文件,并包含以下代码

<?php
namespace Rexfordnyrk\Tempconv;
class TemperatureConverter
{
//Caller must provide the temperature value and the unit either C Celsius or F Fahrenheit
public function convert($temperature, $unit)
{
//Checking whether the unit we're working with is Celsius or Fahrenheit
if ($unit === 'C') {
$fahrenheit = ($temperature * 9 / 5) + 32;
return $fahrenheit;
} elseif ($unit === 'F') {
$celsius = ($temperature - 32) * 5 / 9;
return $celsius;
} else {
//Throwing error if the unit provided is neither C nor F
throw new \InvalidArgumentException('Invalid unit, only C (Celsius) or F (Fahrenheit) are allowed');
}
}
}

这个类有一个名为convert的方法,它接收温度和单位作为参数,并返回转换后的温度。如果单位无效,它将抛出一个异常。

现在就到这里吧。在现实世界的场景中,您很可能会编写单元测试以确保代码在修改或更新后按预期工作。

创建您的composer包。

有了库代码,现在是将它变成Composer包的时候了。您将使用分步向导生成一个composer.json文件,我们将在将其推送到仓库之前讨论一些将代码组织成包的最佳实践。

生成composer.json包文件

虽然您可以在项目目录的根目录手动编写composer.json文件的内容,但最好使用以下Composer命令生成它

$ composer init

此命令会引导您通过一个小型的分步向导。您将对诸如包名、描述、作者信息和许可类型等问题提供答案,这些答案将生成您的包的composer.json文件。

Composer的文档概述了预期的值,以及您可以用来定义项目composer.json的其他选项。

— 使用composer init生成配置。

请注意,向导在适用的情况下会提供预定义的答案,例如从Git推导您的姓名和电子邮件地址。如果您愿意,可以随意更改它们。

此库不依赖于任何其他包的功能,因此您可以对指定依赖项的问题回答“否”。

向导会向您显示生成的文件内容的预览,并要求您确认以完成向导。

组织包文件

完成向导将在composer.json文件之外创建两个目录

src for your source code
vendor for your downloaded dependencies

将TemperatureConverter.php文件移动到src目录中。如果您的库有依赖项,请运行composer install以生成自动加载器并安装包依赖项。

将代码上传到GitHub

将您的更改和新文件添加到git中

$ git add -A

提交对本地仓库所做的更改,并将其推送到GitHub上的远程仓库,以便您可以在下一节中轻松发布项目

$ git commit -am "Initial Release" && git push

为您的库创建一个发布版本

在您的仓库中,您可以创建一个带有版本号的库发布版本,以便其他开发者可以跟踪您的稳定和重大更新。

导航到您的GitHub仓库,在“关于”部分下点击“发布”。

— GitHub’s Releases page.

填写有关发布的一些详细信息,例如标签版本和发布标题。标签版本应该是此发布的唯一标识符(例如:v1.0.0),发布标题应描述包含在发布中的更改(例如:初始发布)。

可选地,您可以添加发布描述。如果您想上传文件,例如编译的二进制文件或源代码存档,请将文件拖放到“通过拖放将二进制文件附加到此处或选择它们”区域,但这不是本教程中必需的。

— Entering the initial release details on GitHub.

点击“发布发布”以创建发布。

您的项目现在应该可在仓库的“发布”页面上找到。用户可以下载您附加的任何文件并查看发布说明。此外,如果您为发布添加了标签,其他开发者可以使用该标签来检出包含在发布中的确切代码。

您的库已经准备好与世界分享了。让我们将其作为一个包在Packagist上发布。

开始使用Packagist

Packagist 是 PHP 的主要包仓库。它为开发者提供了一个中心位置,用于发布和分享他们的 PHP 包,并允许其他开发者在其项目中发现和使用这些包。让我们来发布您的包吧!

导航到 Packagist 网站,点击“登录”,然后选择“GitHub”作为登录方式,使用您的 GitHub 账户进行身份验证。

— Signing up on Packagist with GitHub.

点击“授权”,以授予 Packagist 访问您账户的权限。

— Successful login on Packagist with GitHub.

在 Packagist 上提交您的 Composer 包

要在 Packagist 上发布包,提交包含描述您的包及其依赖关系的 composer.json 文件的 GitHub 仓库。在 Packagist 网站上点击“提交”,在出现的页面上提供您的仓库 URL,然后点击“检查”以验证。

如果仓库有效,Packagist 将检测到包的名称,并使“检查”按钮变为“提交”。

— Composer package rexfordnyrk/tempconv validated and ready to submit.

点击“提交”,Packagist 将花费一点时间来设置和发布您的项目。

— Composer package successfully published.

就是这样!您的包现在可以在 Packagist 上供其他开发者使用,作为他们项目中依赖项。

在其他项目中使用您的 Composer 包

您可以通过将其添加为 composer.json 文件中的依赖项来在其他项目中使用您发布的包。您可以手动创建和编辑该文件,但最好使用以下 Composer 命令:

$ composer require rexfordnyrk/tempconv

Composer 会自动创建 composer.json 文件(如果尚未存在),然后从 Packagist 查找、下载并自动加载该包。输出应类似于以下内容:

创建一个 demo.php 文件来包含您的演示应用程序代码,以便与您的库一起工作。然后,您可以在应用程序代码中使用 TemperatureConverter 类,如下所示:

<?php
use Rexfordnyrk\Tempconv\TemperatureConverter;
require_once './vendor/autoload.php';
$converter = new TemperatureConverter();
$fahrenheit = $converter->convert(20, 'C');
echo "20°C is equivalent to $fahrenheit °F\n";
$celsius = $converter->convert(68, 'F');
echo "68°F is equivalent to $celsius °C\n";

此代码使用 TemperatureConverter 类将 20 摄氏度和 68 华氏度进行转换,并输出结果。导入的 autoloader.php 文件是由 Composer 创建的,用于加载您所需的全部依赖项。这样,在需要时自动加载类。

最后,在您的终端中运行此代码

$ php demo.php

您应该得到类似于以下内容的输出

$ php demo.php
20°C is equivalent to 68 °F
68°F is equivalent to 20 °C

总结

您刚刚创建了一个简单的 PHP 库,该库可以在面向对象的类中将摄氏度转换为华氏度,反之亦然,可以在其他应用程序中重用。您看到了如何使用 Composer 的 Init 命令从类创建包,并学习了您库的基本代码组织最佳实践。您在 Packagist 上发布了您的库,因此您和其他开发者可以用作其他项目的依赖项。

当然,一旦您完成应用程序的开发,您将需要托管它。使用 Kinsta 的 Web 应用程序托管将您的 PHP 开发提升到下一个级别。您可以在几分钟内部署基于 Composer 的 PHP 应用程序。只需通过您项目的 git 仓库添加您的应用程序,Kinsta 就会处理其余部分。它将自动检测 Composer 文件并自动构建您的应用程序。今天开始,无需承担任何风险!