我在我的一个Laravel 4软件包中加载类时遇到了问题。我得到了常见的“未找到类”错误,当composer.json
没有正确的命名空间路径映射时会发生这种错误。我尝试将所有内容添加到composer.json
文件中,但似乎没有任何效果,不是psr-0
,也不是classmap
,也不是files
。但是,如果我在声明一个新对象时尝试使用该类的完整路径:
$foo=new Myvendor\Mypackage\Domain\Models\Mymodel;
效果很好。但是,我不希望每次需要对象时都声明整个路径。具有完整文件路径的类的工作表明我已经非常接近解决方案。
编辑:一些代码
我的班级,位于:src\Myvendor\Mypackage\Domain\Models\Complainant.php
相对于包根
<?php namespace Myvendor\Mypackage\Domain\Models;
class Complainant {
public $fname;
public $lname;
}
我的composer.json
文件的一部分:
"autoload": {
"psr-0": {
"Myvendor\\Mypackage": "src/"
}
},
此代码不起作用:
$var=new Complainant;
虽然如下:
$c=new Myvendor\Mypackage\Domain\Models\Complainant;
答案 0 :(得分:2)
如果您正在执行php artisan dump-autoload
,您可以看到所有类都使用正确的命名空间映射到文件vendor/composer/autoload_classmap.php
中。在那里找到你的类并使用正确的命名空间。