Stack Overflow на русском Asked on January 3, 2021
class Model {
public $text;
public function __construct() {
$this->text = 'Hello world!';
}
}
class View {
private $model;
public function __construct(Model $model) {
$this->model = $model;
}
public function output() {
return '<a href="mvc.php?action=textclicked">' . $this->model->text . '</a>';
}
}
class Controller {
private $model;
public function __construct(Model $model) {
$this->model = $model;
}
public function textClicked() {
$this->model->text = 'Text Updated';
}
}
$model = new Model();
//It is important that the controller and the view share the model
$controller = new Controller($model);
$view = new View($model);
if (isset($_GET['action'])) $controller->{$_GET['action']}();
echo $view->output();
Здравствуйте. Меня вводит в ступор вся эта конструкция. Что конкретно делает класс Model в конструкторе и рядом с переменной в классе View? Как это расшифровывается? В конструкторе класса View вызываем класс Model и берем переменную, которую подставим? Или как?
Разобраться в этом примере очень просто. Вот представь, пятилетнего ребенка попросили нарисовать троллейбус. А потом подсунули тебе эту картинку, чтобы ты по ней изучал принцип действия транспорта на электрической тяге.
Более осмысленным примером будет
class Model {
public $text;
public function __construct() {
$this->text = 'Hello world!';
}
}
class View {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function output() {
return '<a href="mvc.php?action=textclicked">' . $data. '</a>';
}
}
class Controller {
private $model;
public function __construct(Model $model) {
$this->model = $model;
}
public function textClicked() {
$this->model->text = 'Text Updated';
}
public function show() {
$view = new View($this->model->text);
$view->output();
}
}
$model = new Model();
$controller = new Controller($model);
if (isset($_GET['action'])) {
$controller->{$_GET['action']}();
}
Answered by Ипатьев on January 3, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP