Reference .phar 类 与 composer 全局安装

Reference .phar classes installed globally with composer

我在 PHP 中创建了一个小型命令行工具,并且我还将其打包为 PHAR 存档。

我接下来要做的是将我的存档发布到 packagist.org 又名 composer

我现在可以像这样通过 composer 安装我的 PHAR 包:

composer global require acme/mypackage

这可以很好地安装我的包。我也可以通过命令 运行 它。

到目前为止一切顺利,但我目前面临的问题来了。

我有另一个项目应该使用 acme/mypackage。我希望该项目引用打包到该 PHAR 中的 class。像这样:

<?php
class SomeClass extends AcmeClass { 

}

问题是 PHP 代码无法识别 AcmeClass class。有道理,因为它显然 "globally" 安装在系统的某处。

其他图书馆是如何解决这个问题的?如果我没记错的话 PHPUnit 会做类似的事情吧?

我该如何解决这个问题?

您需要将 composer.json 文件添加到项目的根目录:

The first (and often only) thing you specify in composer.json is the require key. You're simply telling Composer which packages your project depends on.

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

接下来,您需要自动加载依赖项。

For libraries that specify autoload information, Composer generates a vendor/autoload.php file. You can simply include this file and you will get autoloading for free.

require 'vendor/autoload.php';

https://getcomposer.org/doc/01-basic-usage.md