Laravel 自定义类介绍及命名空间问题解决
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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。