我是laravel的新人。我在控制器方法中编写以下代码。
include_once(app_path() .'/Classes/Pgp_2fa.php');
$pgp = new Pgp_2fa();
显示以下错误。
AuthController.php第146行中的FatalThrowableError:未找到类'App \ Http \ Controllers \ Pgp_2fa'
您必须为您的类使用正确的命名空间。
如果你没有使用任何命名空间,你应该在类的前面添加一个\
让php知道该类存在于根命名空间中。否则,当你在控制器中时,php会查看当前命名空间App\Http\Controllers
。
$pgp = new \Pgp_2fa();
这不仅仅是Laravel的行为,而是一般的php。
您需要为自定义类添加命名空间,或者只需在类名称上添加斜杠。喜欢 :
$pgp = new \Pgp_2fa();
添加新类时,有几种方法可以使用它们。 (我的意思是,加载它们)
如果您的类具有唯一名称且不使用命名空间,则可以添加反斜杠\
类的开头。
$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",
}
},
您可以在下面的构造函数内部调用,并且可以在剩余函数中使用$ Pgp_2fa变量
class controllername extends Controller
{
public function __construct(Route $route,Request $request)
{
$Pgp_2fa = new \Pgp_2fa();
}
}
您可以通过将自定义类添加到Composer的自动加载阵列来轻松添加它们。转到composer.json并将其添加到:
"autoload": {
"files": [
"app\\Classes\\Pgp_2fa.php"
]
},
现在在你的app文件夹中,在classes文件夹下添加你的Pgp_2fa.php文件。您可以在任何地方使用它,它应该自动加载。
添加类写命令后:
composer dumpautoload刷新自动加载类映射。