【问题标题】:Adding Third party library to Laravel将第三方库添加到 Laravel
【发布时间】:2017-12-09 02:21:50
【问题描述】:

我有一个支付网关提供给我的 RSA 算法库,当我这样做时

include (app_path().'/PaymentGateway/Crypt/RSA.php');

this 并尝试将对象设为$rsa = new Crypt_RSA(); this 它给了我一个错误提示

Class 'App\Http\Controllers\Crypt_RSA' not found

我尝试将它包含在 web.php 中,并让一个可以正常工作的对象在我尝试将它包含在控制器中时出现问题。

【问题讨论】:

  • 尝试 psr-autoload 在 composer.json 中。
  • 能解释一下吗?

标签: php laravel payment-gateway payment


【解决方案1】:

默认情况下,您的 laravel 项目的 app 文件夹中包含的所有内容都是自动加载的,这在您的项目的 composer.json 中有所描述:

...        
"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
...

您唯一需要做的就是使用命名空间:

use App/Path/To/Third/Party/plugin/Class;

但是,如果插件被放置在 App 范围之外,那么只需将其添加到 psr-4 自动加载器:

    "psr-4": {
        "ProjectRootNs\\": "projects/myproject/"
    }

【讨论】:

    【解决方案2】:

    您可以通过将基本文件夹添加到以下位置来告诉 Composer 自动加载任何(非 PSR)类:

    "autoload": {
    "classmap": [
        "app/commands",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ],
    ....
    

    您还可以通过将自动加载器添加到文件部分来自动加载它们:

    "autoload": {
    "files": [
        "temboo/src/Temboo_Loader.php"
    ],
    

    ...

    添加这些条目后,执行:

    composer dumpautoload
    

    并检查文件vendor/composer/autoload_classmap.php,可用的类必须全部在其中列出,如果一个文件不存在则不会自动加载。

    【讨论】:

      【解决方案3】:

      这就是我所做的。哦,还有一点背景,我曾经在 Laravel 4、PHP 5、jpgraph 2 中使用过这个。

      我在Laravel 5.5 上使用jpgraph 4.1,使用PHP 7

      1. 在应用程序下创建了一个名为jpgraph 的文件夹
      2. 将 jpgraph 压缩包中的 src 文件夹放在该文件夹中
      3. 创建的文件调用 Graph1.php,是我使用 jpgraph 的代码,jpgraph 文件夹中的类 Custom_GraphsJM
      4. composer.json 中将"app/jpgraph/Graph1.php" 添加到"classmap"

        "autoload": {
          "classmap": [
            "database/seeds",
            "database/factories",
            "app/jpgraph/Graph1.php"
          ],
          "psr-4": {
            "App\\": "app/"
          }
        },
        
      5. 在应用程序文件夹中:

        composer dump-autoload

      6. 检查了autoload_classmap.php,我有

        'Custom_GraphsJM' => $baseDir . '/app/jpgraph/Graph1.php',

      7. 在顶部的模型中,我有

        use Custom_GraphsJM;

      8. 创建一个类

        $Two_Graphs_Temp = new Custom_GraphsJM();

      【讨论】:

        猜你喜欢
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 2018-09-22
        • 2018-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多