Laravel无法从Acme目录中自动加载模型?

时间:2014-04-26 19:23:45

标签: php laravel laravel-4 composer-php

在我的Laravel应用程序中,我在app目录

中创建了Acme \ fooDir目录

我试图在fooDir中调用模型 - " barModel" -

 //app/Acme/fooDir/test.php 
 $barM = new barModel;

但我收到此错误

        Class 'Acme\fooDir\barModel' not found

这是我的应用结构

  app
  -app/Acme
  --app/Acme/fooDir
  ---app/Acme/fooDir/test.php (this is the file that could load the barModel)
  -app/models
  --app/model/barModel.php (this is the model i am trying to use)

我在composer.json中添加了自动加载

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ],
    "psr-0": 
    { 
        "Acme": "app/"           
    }

和 我已经运行了命令

composer dump-autoload -o

php artisan dump-autoload

但问题没有解决,我仍然得到同样的错误

    Class 'Acme\fooDir\barModel' not found

任何想法?

3 个答案:

答案 0 :(得分:1)

使用namespace时,所有课程都会在namespace内调用。

如果您想在barModel中使用Acme/fooDir/test.php,则需要在use barModel;行之后使用namespace

<?php
namespace Acme\fooDir;

use barModel;

class test {

}

答案 1 :(得分:1)

两件事。

1,您是否已将您的类命名为,

<?php namespace Acme\FooDir;

class Test ...

2,你是否在课堂上使用

<?php namespace Acme\FooDir;

use \BarModel

class Test ...

答案 2 :(得分:1)

这会为你做到这一点。

 $barM = new \barModel;

PHP namespaces and importing