【问题标题】:Laravel 4 package not loading class path properlyLaravel 4 包没有正确加载类路径
【发布时间】: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 我添加了一些我认为与我的问题相关的代码

标签: php json laravel laravel-4 composer-php


【解决方案1】:

如果您正在使用php artisan dump-autoload,您可以看到所有类都映射到文件vendor/composer/autoload_classmap.php 中,并带有其正确的命名空间。在那里找到你的类并使用正确的命名空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多