Laravel 5.5服务提供商

时间:2018-02-19 17:49:29

标签: laravel-5.5

我正在尝试使用我在整个应用程序中使用的常用方法的自定义服务提供程序。但是我得到的错误目标不可实例化。我在Laravel 5.3中也有同样的工作,但现在它不适用于Laravel 5.5。这是我的代码: 在app \ Helpers文件夹中,我创建了一个文件夹Contracts with interface FrontendContracts。

namespace App\Helpers\Contracts;

Interface FrontendContracts{
    public function randomString($len);
} 

在app \ Helpers中我有一个实现接口

的类FrontendMethods
namespace App\Helpers;
use App\Helpers\Contracts\FrontendContracts;

class FrontendMethods implements FrontendContracts{
public function randomString($len){
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmonpqrstuvwxyz";
        $result = "";
        $charArray = str_split($chars);
        for($i = 0; $i < $len; $i++){
            $randItem = array_rand($charArray);
            $result .= "".$charArray[$randItem];
        }
        $result .= time();
        return $result;
    }
}

在app \ Providers中,我有FrontendServiceProvider类:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Helpers\FrontendMethods;

class FrontendServiceProvider extends ServiceProvider{
    protected $defer = true;

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot(){
        //
    }
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register(){
        $this->app->bind('App\Helpers\Contracts\FrontendContracts', function(){

            return new FrontendMethods();
        });

    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides(){
        return ['App\Helpers\Contracts\FrontendContracts'];
    }

}

我已在providers数组中注册了提供程序:

App\Providers\FrontendServiceProvider::class,

我在类{$ parameter-&gt; getDeclaringClass() - &gt; getName()}

中收到错误消息Unresolvable dependency resolving [$ parameter]

和目标[App \ Helpers \ Contracts \ FrontendContracts]不可实例化。

有人可以向我指出我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

我认为您的provides()课程中不需要FrontendServiceProvider方法。尝试删除它。