Laravel | ReflectionException - 类不存在

时间:2014-07-26 15:33:18

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

我在Laravel 4工作台中创建了一个包,它在我的机器上就像一个魅力。一切都按预期加载但现在在另一台机器上我得到了Class not found例外。

我有什么:

composer.json(root)

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "workbench"
    ],
    "files": [
        "app/helpers.php"
    ]
},

请注意列出了工作台目录。

在workbench目录中,我有供应商和包文件夹: 工作台/ krynble / contenter

Inside是常规包结构,但最重要的是还有另一个composer.json文件(在生成包时创建):

"autoload": {
    "classmap": [
        "src/migrations"
    ],
    "psr-0": {
        "Krynble\\Contenter\\": "src/"
    }
},

因此,我在其中按照步骤创建了文档中引用的服务提供商

workbench / krynble / contenter / src / Krynble / Contenter / ContenterSerivceProvider.php(也是自动生成)并将其保留为创建状态,仅使用如下引导方法:

public function boot()
{
    $this->package('krynble/contenter');
}

寄存器:

public function register()
{
    //
}

提供:

public function provides()
{
    return array();
}

将此服务提供程序添加到提供程序列表中的app.php,并在引导函数中调用die()显示它正在被调用。

最后,我创建了我的实用程序类:

工作台/ krynble / contenter / SRC / Krynble / Contenter /服务/映射器/ MediaMapperSerivce.php

<?

namespace Krynble\Contenter\Services\Mappers;
class MediaMapperService {
...
}

最后,在我的控制器中:

<?php

use Krynble\Contenter\Services\Mappers\MediaMapperService;

class MediaController extends BaseController {

    private $mediaMapperService;


    public function __construct(MediaMapperService $mediaMapperService)
    {
        $this->mediaMapperService = $mediaMapperService;
    }

尼斯!它在我的机器上工作(带有ubuntu的流浪盒)!但是在mac笔记本上它没有工作(所以我放弃了区分大小写的东西)。

任何线索?有什么办法调试?我疯了,在每一点上都死了(),似乎无法找到源头。

我应该在服务提供商的offer方法中添加一些内容吗?如果是这样,为什么它在我的机器上工作而不添加它?

1 个答案:

答案 0 :(得分:3)

在挖掘日志之后,我发现问题是最奇怪的:本地计算机中的short_open_tag设置设置为1,在我的QA环境中设置为0。

文件未被解析(但没有引发错误),我得到的类不存在消息。