Laravel 4 包没有正确加载类路径
Posted
技术标签:
【中文标题】Laravel 4 包没有正确加载类路径【英文标题】:Laravel 4 package not loading class path properly 【发布时间】:2013-10-19 05:22:22 【问题描述】:在我的 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;
【问题讨论】:
你更新composer.json后做了composer dump吗? 是的,我每次更改composed.json时都使用composer dump-autoload
您可能使用了错误的命名空间。显示实际代码和实际错误。这个问题不是很有帮助。
好吧,一切看起来都很好,但你说唯一的问题是什么时候不使用完整的命名空间类名?确定你在“使用”时不只是出错了吗?
@Robbo 我添加了一些我认为与我的问题相关的代码
【参考方案1】:
如果您正在使用php artisan dump-autoload
,您可以看到所有类都映射到文件vendor/composer/autoload_classmap.php
中,并带有其正确的命名空间。在那里找到你的类并使用正确的命名空间。
【讨论】:
以上是关于Laravel 4 包没有正确加载类路径的主要内容,如果未能解决你的问题,请参考以下文章