簡體   English   中英

Laravel | ReflectionException-類不存在

[英]Laravel | ReflectionException - Class does not exist

我在Laravel 4工作台中創建了一個程序包,它在我的機器上像一個魅力一樣工作。 一切都按預期加載,但現在在另一台計算機上,我得到了Class not found異常。

我有的:

composer.json(根目錄)

"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

內部是常規的包結構,但最重要的是還有另一個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筆記本電腦上,它不起作用(因此我放棄了區分大小寫的內容)。

有什么線索嗎? 有什么調試方法嗎? 我發瘋了,在每一點上都丟了die(),似乎找不到源。

我是否應該在服務提供商的provides方法中添加一些內容? 如果是這樣,為什么不添加它就可以在我的機器上運行呢?

經過挖掘日志后,我發現問題是最奇怪的:本地計算機中的short_open_tag設置設置為1,並且在我的QA環境中設置為0。

沒有解析文件(但未引發錯誤),並且我收到類不存在的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM