![](/img/trans.png)
[英]ReflectionException: Class ClassName does not exist - Laravel
[英]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.