これは(私は正しい用語を使用していますかどうかわからない)私はIOCにLaravel DIは
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App;
class RUserServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
App::bind('user', function() {
return new \App\Http\Responses\RUser;
});
}
}
これをバインドする方法これは
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class UserFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'user';
}
}
私のファサードクラスでありますユーザーエンティティの実際のコードを含む基盤クラスです
<?php
namespace App\Http\Responses;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Utils\TokenGenerator;
use App\Models\User;
use Validator;
use Hash;
class RUser
{
protected $token_generator;
public function __construct(TokenGenerator $token_generator)
{
$this->token_generator = $token_generator;
}
/**
* Signup User
* @param Request $request
* @return array $response
*/
public function signup($data)
{
$response = [];
$access_token = $this->token_generator->generate(32);
$user = User::create([
'email' => $data->email,
'password' => Hash::make($data->password),
'company_name' => $data->company_name,
'access_token' => $access_token
]);
$response['user_id'] = $user->_id;
$response['access_token'] = $user->access_token;
return $response;
}
}
これは私のUserControllerで自分のRUserクラスを使用している方法です
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Validator;
use FUser;
class UserController extends Controller
{
/**
* Signup User
* @param Request $request
* @return array $response
*/
public function store(Request $request)
{
$this->request = $request;
$payload = json_decode($this->request->getContent());
if($this->validateJson('user.create', $payload)) {
$validator = Validator::make((array) $payload, User::$rules);
if ($validator->fails()) {
$messages = $validator->errors();
return $this->sendResponse(false, $messages);
}
$response = FUser::signup($payload);
return $this->sendResponse(true, $response);
}
}
}
さて問題は、私はそれが正常にコントローラクラスに依存性を注入としてLaravelは自動的TokenGenerator依存関係を注入することを期待しています私のRUSERクラスです。しかし、私はなぜそうしていないのか分かりません。
これは私がRUser.phpライン15で
ErrorExceptionを取得していますものです:RUSER \ のApp \のHttp \レスポンスに渡される引数1 :: __構築物()は のApp \ Utilsののインスタンスでなければなりません\ TokenGenerator、どれを使用すると、コンテナが依存関係を注入する場合は、あなたが使用する必要があり、与えられたライン29 に /var/www/html/MyApp/app/Providers/RUserServiceProvider.phpに呼ばれ、
[本](http://stackoverflow.com/questions/16957790/how-do代わりにネイティブ
new
オペレータのTHOD -i-create-a-facade-class-with-laravel)が役立つかもしれません! – Drudge