私は抽象ベースのコントローラクラスを持っています。すべてのアクションコントローラは、それから派生しています。ベースクラスと派生クラスの依存性注入
構築時のBase Controllerクラスは、Viewオブジェクトを初期化します。このViewオブジェクトは、すべてのアクションコントローラによって使用されます。各アクションコントローラには依存性があります(これはDIコンテナを使用して解決します)。
問題は、ベースコントローラークラスにもいくつかの依存関係(またはパラメーター)、つまり 、path to viewフォルダーが必要であるということです。そして、問題は - コントローラの基底クラスにパラメータを渡す場所と方法
$dic = new Dic();
// Register core objects: request, response, config, db, ...
class View
{
// Getters and setters
// Render method
}
abstract class Controller
{
private $view;
public function __construct()
{
$this->view = new View;
// FIXME: How/from where to get view path?
// $this->view->setPath();
}
public function getView()
{
return $this->view;
}
}
class Foo_Controller extends Controller
{
private $db;
public function __construct(Db $db)
{
$this->db = $db;
}
public function barAction()
{
$this->getView()->some_var = 'test';
}
}
require_once 'controllers/Foo_Controller.php';
// Creates object with dependencies which are required in __construct()
$ctrl = $dic->create('Foo_Controller');
$ctrl->barAction();
private $ view;なぜ$ viewはプライベートですか?読み込むビューパスはいつ知っていますか?アクションコントローラの中に?これは簡単に行うことができます。 – busypeoples