这是我的Facades Class
(.)\1{9,}
这就是我如何绑定到IOC(不确定我是否使用正确的术语)
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class UserFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'user';
}
}
这是包含用户实体
的实际代码的基础类<?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;
});
}
}
这就是我在UserController中使用我的RUser类的方法
<?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;
}
}
现在问题出现在我的RUser类中,我希望Laravel能够自动注入TokenGenerator Dependency,因为它通常会在Controller类中注入依赖项。但我不明白为什么不这样做。
这就是我得到的
RUser.php第15行中的ErrorException:参数1传递给 App \ Http \ Responses \ RUser :: __ construct()必须是。的实例 App \ Utils \ TokenGenerator,没有给出,调用 第29行/var/www/html/MyApp/app/Providers/RUserServiceProvider.php 和定义
答案 0 :(得分:0)
如果您希望容器注入依赖项,则需要使用容器的make()
方法而不是本机new
运算符:
App::bind('user', function($app) {
return $app->make('App\Http\Responses\RUser');
});
可以更简洁地写成:
App::bind('user', 'App\Http\Responses\RUser');