如何在laravel 5.4.10中添加自定义类

问题描述 投票:3回答:5

我是laravel的新人。我在控制器方法中编写以下代码。

include_once(app_path() .'/Classes/Pgp_2fa.php');
$pgp = new Pgp_2fa();

显示以下错误。

AuthController.php第146行中的FatalThrowableError:未找到类'App \ Http \ Controllers \ Pgp_2fa'

php laravel laravel-5
5个回答
2
投票

您必须为您的类使用正确的命名空间。

如果你没有使用任何命名空间,你应该在类的前面添加一个\让php知道该类存在于根命名空间中。否则,当你在控制器中时,php会查看当前命名空间App\Http\Controllers

$pgp = new \Pgp_2fa();

这不仅仅是Laravel的行为,而是一般的php。


2
投票

您需要为自定义类添加命名空间,或者只需在类名称上添加斜杠。喜欢 :

$pgp = new \Pgp_2fa();

2
投票

添加新类时,有几种方法可以使用它们。 (我的意思是,加载它们)

如果您的类具有唯一名称且不使用命名空间,则可以添加反斜杠\类的开头。

$class = new \Pgp_2fa;

但是如果你想要定义它们的命名空间并多次使用相同的名称,那么你必须在composer.json中添加这些类。打开您的composer.json并进入“autoload”部分并在classmap中定义类目录

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories",
            "app/Classes",     // so all classes in this directory are going to load     
        ],

并且不要忘记在这些变化和创建新类之后说composer dump-autoload

如果您不想在添加新类时转储您的作曲家,那么您可能希望在作曲家的psr-4部分中添加这些类

"autoload": {

    "psr-4": {
        "App\\": "app/",
        "App\\Classes\\": "app/Classes",

    }
},

0
投票

您可以在下面的构造函数内部调用,并且可以在剩余函数中使用$ Pgp_2fa变量

 class controllername extends Controller
      {
        public function __construct(Route $route,Request $request)
          { 
            $Pgp_2fa = new \Pgp_2fa();
          }
      }

0
投票

您可以通过将自定义类添加到Composer的自动加载阵列来轻松添加它们。转到composer.json并将其添加到:

"autoload": {
    "files": [
      "app\\Classes\\Pgp_2fa.php"
    ]
  },

现在在你的app文件夹中,在classes文件夹下添加你的Pgp_2fa.php文件。您可以在任何地方使用它,它应该自动加载。

添加类写命令后:

composer dumpautoload刷新自动加载类映射。

© www.soinside.com 2019 - 2024. All rights reserved.