1
我很難理解如何才能做到最好。我理解門面如何作爲語法糖來呈現清晰的靜態代碼佈局風格,同時保持代碼的鬆耦合和可測試性。Laravel門面和緊耦合控制器
但是,我有以下問題。無論何時我有一個控制器,控制器都依賴於類的負載。讓我們以輸入類爲例。每個控制器都是一個IoC容器,所以實際上這很好。因爲如果我想用另一個類來更改輸入類。我只需要創建一個實現正確界面的新類。但是這意味着我應用中的每個控制器都依賴於相同的輸入類。我理解這個權利嗎?
所以我讀這個很漂亮的文章:http://www.nathandavison.com/posts/view/16/using-dependency-injection-and-ioc-in-laravel-4-controllers
總之它表明在你的控制器使用依賴注入(DI)。例如。
class UsersController extends BaseController
{
protected $response;
protected $request;
protected $validator;
protected $hasher;
protected $user;
public function __construct(
Response $response,
\Illuminate\Http\Request $request,
\Illuminate\Validation\Factory $validator,
\Illuminate\Hashing\BcryptHasher $hasher,
User $user
) {
$this->response = $response;
$this->request = $request;
$this->validator = $validator;
$this->hasher = $hasher;
$this->user = $user;
}
public function getIndex()
{
return $this->response->make('Hello World!');
}
}
和
$app->bind('UsersController', function($app) {
$controller = new UsersController(
new Response,
$app->make('request'),
$app->make('validator'),
$app->make('hash'),
new User
);
return $controller;
});
這有一定道理,但因爲它繞過了門面...我想聽到這個辦法的意見是不是框架的理念。這是不是好的做法?