我已经在SO中阅读了几个有关如何在另一个“项目”中安装第三方库的问题。不可避免地,答案是使用composer
,他们都说我们在项目根目录中需要一个composer.json文件。
我很困惑。我正在一个项目中,其“源”版本具有以下结构
web/
src/
web
文件夹包含由项目实现的几个PHP文件。到目前为止,该项目完全没有使用作曲家。
src
目录包含一些核心引擎文件的c / c ++文件。
我现在需要以这种方式将php-jwt添加到这个“项目”(这是一个PHP + C ++的混合项目),以便可以将jwt库包含在{{1}内的某个文件中}
我还具有以下附加要求:
web/views/myfile.php
是其中的一部分)不需要安装composer。 鉴于此,我到底在哪里使用composer下载jwt库?在jwt-php
里面吗?
答案 0 :(得分:3)
也许,我们只是在这两个目录旁边添加一个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
我们以后总是可以更改目录。最初可能并不那么重要。
答案 1 :(得分:1)
如您所说,您的项目是一种多语言混合应用程序。
我不建议您在项目的根目录中安装供应商的供应商目录。如果您的php主要存在于Web目录中,则可以在web
目录中安装供应商。目录结构如下:
web/
---vendor/
------autoload.php
------...
---composer.json
---composer.lock
---...
src/
要获取对已安装库的引用,可以使用include '../vendor/autoload.php'
中的web/views/myfile.php
来加载作曲家自动注册脚本(或者您可以在统一的主条目脚本中引入自动加载功能)。然后通过命名空间调用第三方库:new Firebase\JWT\JWT();
然后,将供应商提交给您的VCS,并将其打包到RPM或DEB中,这样您的客户就无需安装composer。
Google Translate的答案
修改: 将供应商目录放置在对Web服务器具有开放权限的目录中是危险的。请根据实际情况调整具体目录结构。顺便说一下,名为web的目录不一定具有Web服务器的打开权限。
答案 2 :(得分:-2)
如果您不想使用作曲家,则只需下载该库并在您的代码中调用它即可。
<?php
require _DIR.'path-to-librayr';
use class;