如何创建一个供作曲家自动加载使用的库?

2022-01-21 00:00:00 php composer-php

我想让 Composer 自动加载 这个包.

I want to make this package to be autoloaded by Composer.

此软件包可在 Packagist

我意识到我需要在 composer.json 中添加一些东西,并且我需要在某处有一个 autoload.php.

I realized I need to add something to composer.json and I need to have a autoload.php somewhere.

应该自动加载的唯一类是 Webbot.php.

The only class that should be autoloaded is the Webbot.php.

谁能给我一步一步的分解来完成这个?

Can someone give me the step by step breakdown to accomplish this?

返回的 Google 搜索结果是自动加载库的说明.

Google search results returned are instructions to autoload libraries.

我需要有关如何编写可自动加载库的说明.

I need instructions on how to write autoloadable libraries.

推荐答案

首先,您需要在 PSR-0 或 PSR-4 中构建您的包.我还没有开始使用 PSR-4,因为它刚刚被接受为标准.Composer 仍将在很长一段时间内支持 PSR-0.

First, you need to have your package structured in either PSR-0 or PSR-4. I haven't started using PSR-4 yet as it has only just been accepted as a standard. Composer will still support PSR-0 for a long time to come.

这意味着您必须遵守以下规则:

This means that you MUST follow these rules:

  • 完全限定的命名空间和类必须具有以下内容结构 <Vendor Name>(<Namespace>)*<Class Name>
  • 每个命名空间都必须有一个顶级命名空间(供应商名称").
  • 每个命名空间都可以拥有任意数量的子命名空间.
  • 每个命名空间分隔符都转换为 DIRECTORY_SEPARATOR 时从文件系统加载.
  • CLASS NAME 中的每个 _ 字符都转换为DIRECTORY_SEPARATOR._ 字符在命名空间.
  • 完全限定的命名空间和类以 .php 为后缀时从文件系统加载.
  • 供应商名称、命名空间和类名中的字母字符可以是小写和大写的任意组合.

这里有完整的FIG指南

这意味着你的包应该按如下方式在你的 github 存储库中布局:

This would mean that your package should be laid out in your github repository as follows:

-src
    -Simkimsia
        -Webbot
            -Webbot.php
-composer.json
-license.md
-{any other base level files}

Webbot.php 将位于命名空间中:SimkimsiaWebbot 由目录结构指定.

Webbot.php would be in the namespace : SimkimsiaWebbot as dicated by the directory structure.

然后...由于这是一个 github 包,您可以使用 repositories 属性将它添加到您的项目 composer.json.

Then... As this is a github package, you can add it to your projects composer.json using the repositories property.

{
    "name" : 'test',
    "description" : 'Test',
    "keywords" : ['test'],
    "repositories" : [
    {
        "type": "vcs",
        "url": "https://github.com/simkimsia/webbot.git"
    }
    ],
    "require" : {
        "simkimsia/webbot" : "dev-master"
    }
}

该包将从 Composers 自动加载中获得,并且可以实例化为:

The package will be available from Composers autoload and can be instantiated as :

$webbot = new SimkimsiaWebbotWebbot();

注意:运行 composer install 后,Composers autoload.php 将可用:

Note: Composers autoload.php will be available in once you have run composer install:

/vendor/composer/autoload.php

只需在 PHP 脚本的开头包含此文件,您的类就可用了.

Just include this file at the start of your PHP script and your classes will be available.

相关文章