我已经阅读了几个问题,因此如何在另一个"项目"中安装第三方库。不可避免地,答案是使用composer
,他们都说我们需要一个composer.json文件。
我很困惑。我正在从事一个项目,其"来源"构建具有以下结构
web/
src/
web
文件夹包括该项目实现的几个PHP文件。到目前为止,这个项目根本不使用作曲家。
src
目录包含某些核心引擎文件的C/C 文件。
我现在需要,例如,例如,我可以将php-jwt添加到此"项目"(这是一个混合php c 项目(中,我可以将JWT库包含在web/views/myfile.php
我也有以下其他要求:
- 该项目非常大,其包装规则非常复杂。最后,创建了用户在其系统上安装的RPM或DEB文件。我想确保安装该项目的用户,其中
jwt-php
是不需要安装作曲家的一部分。
鉴于这一点,我到底在哪里使用作曲家下载JWT库?内部web/
?
也许,我们只是在这两个目录旁边添加一个composer.json
:
- web/
- src/
- vendor/---------
composer.json -
composer.lock -
------ autoload.php
------ composer
------ jwt-php
------ other-php-cpp-package-1
------ other-php-cpp-package-2
------ other-php-cpp-package-3
------ other-php-cpp-package-4
-------
然后,我们的composer.json
看起来像:
{
"name": "project/cphp",
"type": "library",
"description": "PHP C++ Project X",
"keywords": ["php","c++"],
"copyright": "",
"license": "",
"version": "1.0.0",
"authors": [{
"name": "user1361529",
"role": "Developer"
}],
"require": {
"jwt-php": "*",
},
"require-dev": {},
"autoload": {
"classmap": [],
"psr-0": {},
"psr-4": {}
},
"config": {}
}
例如,如果我们使用的是macos,我们将安装作曲家:
cd path/to/main/dir
sudo composer install
我们以后可以随时更改目录。最初可能不是那么重要。
正如您所说,您的项目是多语言混合应用程序。
我不建议您将供应商的供应商目录安装在项目的根目录中。如果您的PHP主要存在于Web目录中,则可以在web
目录中安装供应商。目录结构如下:
web/
---vendor/
------autoload.php
------...
---composer.json
---composer.lock
---...
src/
对于已安装的库的引用,您可以使用web/views/myfile.php
中的include '../vendor/autoload.php'
加载COPOSER自动注册脚本(或者您可以在统一的主条目脚本中引入自动加载(。然后通过命名空间致电第三方库:new FirebaseJWTJWT();
然后,将供应商提交给您的VCS并将其包装到RPM或DEB中,以便您的客户不需要安装Composer。
Google Translate的答案
编辑:将供应商目录放入并在Web服务器上打开权限的目录是危险的。请根据实际情况调整特定目录结构。顺便说一句,名称Web的目录不一定是Web服务器的开放许可。
如果您不想使用作曲家,则可以下载库并在代码中调用它。
<?php
require _DIR.'path-to-librayr';
use class;