2015-11-06 142 views
0

我正在尝试构建自定义服务提供程序包,但是我遇到以下错误。有人对此有经验吗?“解决无法解决的依赖关系”错误,Laravel服务提供商

Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Support\ServiceProvider

包文件夹结构:

[root] 
....packages/ 
........mbarwick83/ 
............previewr/ 
................src/ 
....................PreviewrServiceProvider.php 
....................Previewr.php 
................composer.json 

配置/ app.php:

Mbarwick83\Previewr\PreviewrServiceProvider::class

服务提供商:

<?php 

namespace Mbarwick83\Previewr; 

use Illuminate\Support\ServiceProvider; 

class PreviewrServiceProvider extends ServiceProvider 
{ 
    /** 
    * Indicates if loading of the provider is deferred. 
    * 
    * @var bool 
    */ 
    protected $defer = false; 

    /** 
    * Perform post-registration booting of services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     // 
    } 

    /** 
    * Register any package services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     $this->app->bind('Mbarwick83\Previewr\Previewr',function($app){ 
      return new Previewr($app); 
     }); 
    } 
} 

Previewr.php(类):

<?php 

namespace Mbarwick83\Previewr; 

class Previewr 
{ 
    /** 
    * Create a new Previewr Instance 
    */ 
    public function __construct() 
    { 
     // 
    } 

    /** 
    * Friendly welcome 
    * 
    * @param string $phrase Phrase to return 
    * 
    * @return string Returns the phrase passed in 
    */ 
    public function something($phrase) 
    { 
     return $phrase; 
    } 
} 

Controller/view: 

use Mbarwick83\Previewr\PreviewrServiceProvider as Previewr; 

public function index(Previewr $previewr) 
{ 
    echo $previewr->something('Hello, League!'); 
} 

composer.json:

"autoload": { 
     "psr-4": { 
      "Mbarwick83\\Previewr\\": "packages/Mbarwick83/Previewr/src" 
     } 
    }, 
+0

你尝试使用'作曲家转储autoload'和'作曲家update'? – aldrin27

+0

@ aldrin27是的,我做到了。 –

回答

1

在你的控制器,你确定要注入你的服务提供商?

use Mbarwick83\Previewr\PreviewrServiceProvider as Previewr; 

机会是你想使用它代替:

use Mbarwick83\Previewr\Previewr; 
+0

好的,它修复了它!问题 - 这是什么工作(抱歉,广泛的问题)......但这是干什么的? –

+0

另外,如果我打算使用'facade'进行注射,我会使用'使用Mbarwick83 \ Previewr \ Facades \ Previewr;'而不是右边(假设我创建了门面类当然是 –

+0

)您不注入门面如果你正在使用注入,那么门面就没有任何意义 –