【问题标题】:Composer - Autoloading an API / Custom InstallerComposer - 自动加载 API / 自定义安装程序
【发布时间】:2014-02-26 04:33:09
【问题描述】:

如何使用 composer 安装的库自动加载一组库 API 函数?

我有一个带有函数 API 的库,用于连接库内部对象,并希望 composer 自动加载 API 并在安装后使其可用,而无需最终开发人员包含文件。

目前,该库仅通过包含 __init__.php 来加载,并且它包含 API 函数和自动加载器(如果需要)。

谢谢!

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    Composer 总是要求最终开发者包含一个文件,即vendor/autoload.php。你不能让它变得更容易。

    但是您可以做的是使包含__init__.php 成为可选,因为 Composer 的集成允许您改用该自动加载器。这也适用于无法真正自动加载的函数 - Composer 提供在被告知时始终包含文件。

    因此,最终您对该 API 库的 Composer 配置将如下所示:

    {
        "name": "yourvendorname/yourfancylibraryname",
        "license": "any open source identifier",
        "autoload": {
            "psr-0": {
                "Foo_Api": "src/files"
            },
            "classmap": [
                "extra/folders_with_any_other_class_not_conforming_to_psr0_or_psr4"
            ],
            "files": [
                "functions/file_with_your_function_definitions.php"
            ]
        }
    }
    

    我不知道您的类是否符合 PSR-0 甚至 PSR-4,但如果符合,如果您可以使用这些标准声明自动加载器,您和每个人都会受益。如果没有:Classmap 会帮助你。

    您的函数定义将由“文件”中提到的一个或多个文件加载。

    您不再需要自己的 Composer 自动加载器。

    当然,您也可以简单地提及旧的 __init__.php 作为要包含在“文件”中的文件,但这会将您的库与所有其他类分开,可能会降低性能(Composer 已经有一个非常好的自动加载器 - 不需要其中两个),并且肯定会将所有类排除在转储到更快的 Composer 类映射自动加载器中。

    【讨论】:

    猜你喜欢
    • 2014-05-24
    • 2017-01-26
    • 2016-04-17
    • 1970-01-01
    • 2022-06-23
    • 2019-12-05
    • 2019-11-06
    • 2017-03-22
    • 2015-05-07
    相关资源
    最近更新 更多