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';
我在 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';