首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP++项目的Composer安装

PHP++项目的Composer安装
EN

Stack Overflow用户
提问于 2019-05-04 21:55:54
回答 3查看 292关注 0票数 0

我读过几个关于如何在另一个“项目”中安装第三方库的问题。不可避免的是,答案是使用composer,他们都说我们需要项目根目录中的composer.json文件。

我很困惑。我正在从事一个项目,其“源”构建具有以下结构

代码语言:javascript
复制
web/
src/

web文件夹包含由项目实现的多个PHP文件。到目前为止,这个项目根本不使用编写器。

src目录包含一些核心引擎文件的c/c++文件。

现在我需要将php-jwt添加到这个“项目”(这是一个混合的PHP+C++项目),我可以将jwt库包含在web/views/myfile.php中的某个文件中。

我还需要下列额外经费:

  • 这个项目是一个相当大的项目,其包装规则也相当复杂。最后,基本上是由用户在系统上安装的RPM或DEB文件创建的。我希望确保安装该项目的用户不需要安装composer,因为jwt-php是该项目的一部分。

既然如此,我应该在哪里使用composer下载jwt库呢?在web/里面?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-04 22:11:53

也许,我们只需在这两个目录旁边添加一个composer.json

代码语言:javascript
复制
- 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看起来可能是:

代码语言:javascript
复制
{
    "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,我们将安装composer:

代码语言:javascript
复制
cd path/to/main/dir

sudo composer install

以后我们可以随时更改目录。一开始可能没那么重要。

票数 3
EN

Stack Overflow用户

发布于 2019-05-05 02:40:13

正如您所说,您的项目是一个多语言混合应用程序。

我不建议您在项目的根目录中安装供应商的供应商目录。如果您的php主要存在于web目录中,那么您可以在web目录中安装供应商。目录结构如下:

代码语言:javascript
复制
web/
---vendor/
------autoload.php
------...
---composer.json
---composer.lock
---...
src/

对于已安装库的引用,可以使用web/views/myfile.php中的web/views/myfile.php加载composer自动注册脚本(或者可以在统一的主条目脚本中引入autoload )。然后通过命名空间:new Firebase\JWT\JWT();调用第三方库。

然后,将供应商提交到您的VCS中,并将其打包到RPM或DEB中,以便您的客户不需要安装composer。

谷歌翻译的答案

编辑:将供应商目录放在具有对web服务器开放权限的目录中是危险的。请根据实际情况调整具体的目录结构。顺便说一下,名为web的目录不一定具有web服务器的开放权限。

票数 0
EN

Stack Overflow用户

发布于 2019-05-04 22:24:29

如果您不想使用composer,那么只需下载库并在代码中调用它。

代码语言:javascript
复制
<?php

  require _DIR.'path-to-librayr';

  use class;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55987122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档