【问题标题】:Using new composer to install libraries in Yii2 Project在 Yii2 项目中使用新的 composer 安装库
【发布时间】:2016-04-07 21:16:34
【问题描述】:

我已经通过存档安装了 Yii2 Advanced 模板,并且已经完成了我一半的应用程序,但是现在我想安装一些可以通过 composer 安装的库,所以我也安装了 composer,但是现在我该如何安装一个库为我的 yii2 项目使用该作曲家?

【问题讨论】:

    标签: installation composer-php libraries yii2-advanced-app


    【解决方案1】:

    使用 Composer 包 许多第三方库以 Composer 包的形式发布。您可以通过以下两个简单步骤安装此类库:

    1. 修改应用程序的 composer.json 文件并指定哪个 您要安装的 Composer 软件包。
    2. 运行composer install来安装指定的包。

    使用下载的库 如果一个库不是作为 Composer 包发布的,你应该按照它的安装说明来安装它。在大多数情况下,您需要手动下载发布文件并将其解压到 BasePath/vendor 目录中,其中 BasePath 表示应用程序的基本路径。

    如果库带有自己的类自动加载器,您可以将其安装在应用程序的入口脚本中。建议在包含 Yii.php 文件之前完成安装,以便 Yii 类自动加载器可以优先自动加载类。

    如果一个库没有提供类自动加载器,但它的类命名遵循 PSR-4,你可以使用 Yii 类自动加载器来自动加载类。您需要做的只是为其类中使用的每个根命名空间声明一个根别名。例如,假设您在目录 vendor/foo/bar 中安装了一个库,并且库类位于 xyz 根命名空间下。您可以在应用程序配置中包含以下代码:

        [
        'aliases' => [
            '@xyz' => '@vendor/foo/bar',
        ],
    ]
    

    如果以上都不是,很可能是库依赖于 PHP 的包含路径配置来正确定位和包含类文件。只需按照它关于如何配置 PHP 包含路径的说明进行操作即可。

    在库需要显式包含每个类文件的最坏情况下,您可以使用以下方法按需包含类:

    • 确定库包含哪些类。
    • 列出Yii::$classMap中的类和对应的文件路径 在应用程序的入口脚本中。例如,

      Yii::$classMap['Class1'] = 'path/to/Class1.php'; Yii::$classMap['Class2'] = 'path/to/Class2.php';

    更多参考信息可以在这里找到:http://www.yiiframework.com/doc-2.0/guide-tutorial-yii-integration.html

    【讨论】:

      【解决方案2】:

      我按照你之前说的做,可以吗?它完成了吗?或者我必须做的任何步骤? 我可以检查哪个文件我的 yii 文件已经与 composer 连接?

      【讨论】:

      • 嗨@pandu-pratama-nur,没关系。尝试安装一些软件包,看看它是如何工作的。有一个网站有非常有用的包:demos.krajee.com 另外,尽量回复同一个帖子,不要开一个新的。
      【解决方案3】:

      运行命令:

      composer global require "fxp/composer-asset-plugin:~1.1.1"
      

      从安装指南 (http://www.yiiframework.com/doc-2.0/guide-start-installation.html#installing-via-composer) 通过 Composer 获取 bower 和 npm 包,然后创建一个 composer.json 文件,一个干净的高级模板安装示例:

      {
          "name": "yiisoft/yii2-app-advanced",
          "description": "Yii 2 Advanced Application Template",
          "keywords": ["yii2", "framework", "advanced", "application template"],
          "homepage": "http://www.yiiframework.com/",
          "type": "project",
          "license": "BSD-3-Clause",
          "support": {
              "issues": "https://github.com/yiisoft/yii2/issues?state=open",
              "forum": "http://www.yiiframework.com/forum/",
              "wiki": "http://www.yiiframework.com/wiki/",
              "irc": "irc://irc.freenode.net/yii",
              "source": "https://github.com/yiisoft/yii2"
          },
          "minimum-stability": "dev",
          "prefer-stable" : true,
          "require": {
              "php": ">=5.4.0",
              "yiisoft/yii2": "*",
              "yiisoft/yii2-bootstrap": "*",
              "yiisoft/yii2-swiftmailer": "*",
          },
          "require-dev": {
              "yiisoft/yii2-codeception": "*",
              "yiisoft/yii2-debug": "*",
              "yiisoft/yii2-gii": "*",
              "yiisoft/yii2-faker": "*",
          },
          "config": {
              "process-timeout": 1800
          },
          "extra": {
              "asset-installer-paths": {
                  "npm-asset-library": "vendor/npm",
                  "bower-asset-library": "vendor/bower"
              }
          }
      }
      

      【讨论】:

      • 那我如何检查我的 yii 项目是否已经与 composer 连接?
      • 我只知道并检查了它,但我的项目和您的示例之间存在差异,在您的示例中有这个命令行 "minimum-stability": "dev", "prefer-stable" : true ,但在我的只是“最低稳定性”:“稳定”,可以吗?
      猜你喜欢
      • 2017-09-23
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2014-12-15
      • 2015-08-09
      • 2015-07-21
      相关资源
      最近更新 更多