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-0classmapfiles 都没有。但是,如果我在声明新对象时尝试使用类的完整路径:

$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 包没有正确加载类路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在子目录 Laravel 中正确配置 htaccess?

larave学习笔记1-安装配置

Laravel 延迟加载的问题

使用最新的 Laravel 版本

在 laravel 5.2 中找不到类“Html”

在 Laravel 5 (Lumen) 中使用基本路径