gpt4 book ai didi

laravel - 在 laravel 中使用外部类时找不到类

转载 作者:行者123 更新时间:2023-12-02 00:08:18 24 4
gpt4 key购买 nike

我正在努力以 Laravel 的方式包含一个外部类。我现在有一种迂回的方式来做这件事..

首先我有一个文件 app/Http/Requests/Moneris/Moneris.php 包含以下内容:

<?php
namespace App\Http\Requests\Moneris;

class mpgTransaction {
/* stuff */
}

然后在 app/Http/Controllers/MyController.php 中,我有以下内容:

<?php
namespace App\Http\Controllers;

require_once(str_replace("/MyController.php","/",__FILE__).'../Requests/Moneris/Moneris.php');
use App\Http\Requests\Moneris as mn;

class MyController extends Controller
{
public function index()
{
$mpg = new mn\mpgTransaction();
}
}

这很好用。但是,如果我将 MyController.php 的内容更改为:

<?php
namespace App\Http\Controllers;

use App\Http\Requests\Moneris\Moneris;

class MyController extends Controller
{
public function index()
{
$mpg = new mpgTransaction();
}
}

我收到 500 内部服务器错误,日志显示找不到 mpgTransaction 类。我做错了什么?

最佳答案

关注PSR-1 standard你应该将你的类命名为 Moneris 而不是 mpgTransaction。此外,要使自动加载器工作,您必须使文件名和类名匹配。

所以文件 Moneris.php 应该是。

<?php
namespace App\Http\Requests\Moneris;

class Moneris {
/* stuff */
}

在 Laravel 中你不使用 require_once(),使用 PSR-4自动加载,因此您应该在遵循自动加载器规则时将其删除,我认为您在重命名类时会这样做。

您的最终 Controller 版本可以是。

use App\Http\Requests\Moneris\Moneris;

public function index()
{
$mpg = new Moneris();
}

关于laravel - 在 laravel 中使用外部类时找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com