我在library
文件夹中创建了一个app
文件夹,以添加我自己的课程。
这是文件app/library/helper.php
的内容:
<?php
namespace Library;
class MyHelper
{
public function v($arr)
{
var_dump($arr);
}
}
我将命名空间添加到composer.json
:
然后我跑了
$ composer dump-autoload
但它似乎没有任何影响。
文件
vendor/composer/autoload_psr4.php
vendor/composer/autoload_classmap.php
没有改变。
如果我尝试创建MyHelper
的实例,Laravel会报告以下错误:
我不确定我做错了什么。
答案 0 :(得分:6)
您的自动加载配置几乎不错,但您有
要解决此问题,请调整自动加载配置:
{
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
}
}
然后将目录/library
重命名为/Library
(注意案例)。
然后将文件/app/Library/helper.php
重命名为/app/Library/MyHelper.php
(注意类名称应与文件名匹配)。
然后调整/app/Library/MyHelper
提供的类的名称空间以匹配PSR-4前缀(以及项目的结构),以及类的用法:
namespace App\Library;
class MyHelper
{
public function v($arr)
{
var_dump($arr);
}
}
供参考,见:
答案 1 :(得分:2)
在files
中使用composer.json
指令:https://getcomposer.org/doc/04-schema.md#files
{
"autoload": {
"files": ["app/library/helper.php"]
}
}
答案 2 :(得分:0)
我知道这个问题已经回答了一段时间,但它不起作用的原因是你需要给出与文件结构相对应的命名空间。因此,由于Library类位于App文件夹中,您需要:
namespace App\Library;
class MyHelper{
public function v($arr){
var_dump($arr);
}
}
此外,如果要打电话给班级MyHelper
,则需要调用文件MyHelper.php
答案 3 :(得分:-1)
使用composer.json:
"autoload": {
"classmap": [
"database",
"app/Transformers"
]
},
添加自动加载目录,例如我添加了app / Transformers。
不要忘记添加运行composer dump-autoload
。
此方法的唯一问题是,无论何时添加新类,都需要运行composer dump-autoload
。
或者您可以使用&#34;文件&#34;在composer.json中。
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}