Code前端首页关于Code前端联系我们

Laravel 自定义类介绍及命名空间问题解决

terry 2年前 (2023-09-25) 阅读数 47 #后端开发

1.问题描述

Laravel 中引入了第三方验证码类。在使用中,我发现如果不给这个类命名空间,使用这个文件时的Use要求是引入该文件。实现后,当

new Code()时,找不到“App\Http\Controllers\Admin\Code”类,即出现找不到该类的错误。系统发现在当前文件Namespace中可以找到这个类。因此,类名前必须添加\字符,即new \Code(),这样Code类才能在根命名空间中找到并可以正常使用。

出于好奇,我添加了一个命名空间 resources\org\code ;到代码类。我发现使用 resources\org\code\Code;我仍然收到错误消息,提示找不到该类。

2。解决流程

该错误无法通过更改命名空间和更改类文件的存储位置来解决。后来百度确定是类加载问题是自定义的,即命名空间使用正确,但laravel并没有加载这个类。文档。终于在csdn 的大神z博客上找到了解决方案。

将新的类包添加到自动加载器中的类映射元素中。

"autoload": {
  "classmap": [
    "database",
 "resources/org/code"//添加自己的命名空间
  ],
  "psr-4": {
    "App\\": "app/"
   }
},

完成后,需要在命令行中使用composer命令。

完成后,返回项目并使用Code class\org\code\Code;使用文件的资源;将能够正确地new Code()。

3。总结

如果自定义类没有使用命名空间,可以直接要求使用类文件,但是在添加\Code时,必须添加\字符来表示根命名空间。

如果使用命名空间,必须设置好,让系统自动加载自定义类包,然后才能使用use。

另外,经过测试,发现在使用命名空间时,仅使用request仍然会出错,而且必须指定命名空间。然而,使用它可以节省你的钱。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门