【问题标题】:What steps it takes to add GitHub repo to Laravel application?将 GitHub 存储库添加到 Laravel 应用程序需要哪些步骤?
【发布时间】:2017-04-22 22:52:27
【问题描述】:

我想在我的 Laravel 应用程序中使用以下 GitHub 存储库:

https://github.com/khanamiryan/php-qrcode-detector-decoder

它没有设置作曲家,也不能从 Packagist 找到。我尝试使用常规 php_require,但它告诉我“找不到类 'App\Http\Controllers\QrReader'”。

无论如何,使用 php_require 感觉不对。处理这种情况的正确方法是什么?

【问题讨论】:

标签: php laravel github composer-php


【解决方案1】:

在您的应用根目录中创建一个新目录

mkdir third-party
cd third-party

克隆仓库

git clone https://github.com/khanamiryan/php-qrcode-detector-decoder

编辑您的 composer.json 文件并将其添加到类映射中:

"classmap": [
    "database",
    "third-party/php-qrcode-detector-decoder"
],

更新类图:

composer dumpautoload

你应该看到你的vendor/composer/autoload_classmap.php

'Zxing\\Binarizer' => $baseDir . '/third-party/php-qrcode-detector-decoder/lib/Binarizer.php',
'Zxing\\BinaryBitmap' => $baseDir . '/third-party/php-qrcode-detector-decoder/lib/BinaryBitmap.php',
...

那么你只需要使用它:

use Zxing\Reader;

【讨论】:

  • 谢谢先生!您和 MacPrawns 的回答帮助我顺利进行。
【解决方案2】:

我认为主要的类是 QrReader()。您可以将此类用作控制器类,但您需要扩展控制器类并修复导入。你也可以在你的 laravel 控制器上将这个类作为第三方类导入。 你需要使用 QrReader() 类吗? 然后只需将所有库文件 App\Libraries 和主类放在 App\classes 中。或者你也可以按照我们自己的方式来做。但请遵循以下 1) 管理命名空间 2)使用

将类导入您的控制器
use App\classes\QrReader

最后,您将可以访问导入类中定义的所有方法。但是在你的主类中,你需要更正库文件的路径和依赖关系。

你也可以试试这个教程: How to use external classes

你可以在这里阅读讨论(很好) Best way to import third party classes

【讨论】:

  • 你如何看待 fork 现有的 repo、添加 composer 文件并将其提交给 Packagist?这就是让它正常工作的全部吗?然后我可以在 config/app.php (提供者和别名)中添加必要的行。
  • 是的,你可以这样做,但我认为你会面临依赖问题。我认为你需要用这种方法做更多的事情。好主意,但对我来说,我会用简单的方法......我们可以和作曲家一起做,这将是一个很好的方法,也可以做到......我需要尝试一次才能看到。
  • “Antonio Carlos Ribeiro”的答案是您正在寻找的最佳答案
【解决方案3】:

因为这个github项目没有composer.json文件,我觉得你不能用composer。

但是,您可以对 repo 进行分支,制作自己的副本,并向其中添加 composer 文件。然后你就可以将它添加到你的主项目的 composer.json 文件中:

{
"repositories": [
    {
        "type": "git",
        "url": "https://github.com/your-git-account/php-qrcode-detector-decoder"
    }
],
"require": {
    "your-git-account/php-qrcode-detector-decoder": "dev-master"
}

希望这会有所帮助!

(来源https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository

【讨论】:

  • 我喜欢这种方式。命名空间呢?我应该在 config\app.php 中添加一些东西吗?
  • 对,所以一旦包含了 composer 文件(运行 composer update your-git-account/php-qrcode-detector-decoder),这只会使代码在本地可供您的 Laravel 应用程序使用。要实际使用代码,您可能需要使用 [laravel.com/docs/5.3/providers](service provider) 或类似的东西来包装此模块的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多