我正在尝试编写一个我想从命令行运行的 PHP 脚本。我想使用 Composer 来管理其依赖项,并使其可以作为其他项目的依赖项进行安装。我还想保持单独使用它(及其依赖项)的能力。
现在,main.php
是我的“入口点”(我将从命令行执行的内容)。当我构建和测试它时,我是以“独立”的心态进行的。一个这样的,main.php
需要像这样自动加载:
<?php
require_once __DIR__.'/../vendor/autoload.php';
继续保持独立的心态,我将其设置如下:
-
git clone
包装到位
cd package
composer install
这会产生以下目录设置”
package
|-composer.json
|
|-src
| |-ClassOne.php
| |
| |-ClassTwo.php
| |
| |-main.php
|
|-vendor
|-autoload.php
|
|-composer
|
|-3rdpaty_1
|
|-3rdpaty_2
这很有效——我可以跑步php src/main.php
它能够找到它需要的类,因为它加载了__DIR__.'../vendor/autoload.php'
.
我遇到麻烦的地方是当我想将包安装为另一个项目的依赖项时(以便让脚本可以在那里运行)。我将我的包添加到composer.json
然后它就被安装了。尝试奔跑php vendor/compnay/package/src/main.php
然而,失败了,因为必要的autoload.php
位于不同的地方:
dependent_project
|-composer.json
|
|-some_code
|
|-vendor
|-autoload.php
|
|-composer
|
|-company
| |-package
| |-composer.json
| |
| |-src
| |-ClassOne.php
| |
| |-ClassTwo.php
| |
| |-main.php
|
|-other_vendor_1
|
|-other_vendor_2
我明白出了什么问题,但我不知道如何解决它。如何使用作曲家提供这样的东西?我已经搜索了很多,但没有看到有人提出或回答同样的问题。我注意到bin
的财产composer.json
并开始研究这个想法,但我仍然没有找到很多关于如何正确设置脚本以找到不同上下文中所需内容的信息。
我考虑尝试使用include
in an if
,并运行第二个include
失败时转向另一条路径,但这似乎不是正确的方法。