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

aik*_*hun 5 php composer-php

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

这个包可以在Packagist找到

我意识到我需要添加一些东西composer.json,我需要有一个autoload.php地方.

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

有人能给我一步一步细分来完成这个吗?

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

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

Dav*_*ker 12

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

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

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

全图指南

这意味着您的包应该在您的github存储库中布局,如下所示:

-src
    -Simkimsia
        -Webbot
            -Webbot.php
-composer.json
-license.md
-{any other base level files}
Run Code Online (Sandbox Code Playgroud)

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

然后......因为这是一个github包,你可以使用repositories属性将它添加到你的项目composer.json中.

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

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

$webbot = new Simkimsia\Webbot\Webbot();
Run Code Online (Sandbox Code Playgroud)

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

/vendor/composer/autoload.php
Run Code Online (Sandbox Code Playgroud)

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