Поддерживает ли PHP шаблон MVP?

Существует множество примеров, объясняющих шаблон MVP с использованием ASP.NET, но ничего не найденного с помощью PHP.

Я программист PHP и хочу знать, где я могу получить примеры PHP-шаблонов MVP?

Solutions Collecting From Web of "Поддерживает ли PHP шаблон MVP?"

Короткий ответ: Да, PHP делает .

(Обратите внимание, что это не точно MVP, как описано в его оригинальной статье, но вариант для сети)

Разница между MVC и MVP заключается в том, что представление полностью пассивное и не знает о слое модели. В то время как в MVC он не пассивен и не знает модельного слоя. В правильном MVP класс View (если он есть) также НЕ ДОЛЖЕН реализовывать конструктор.

Типичный пример MVP будет состоять из следующих частей:

  1. Уровень доступа к данным (DataMappers, ORM и т. Д.)
  2. Бизнес-логика (например, проверка и вычисления)
  3. Пассивный класс представления (это может быть шаблон, но лучше было бы придерживаться класса)
  4. Ведущий, который соединяет модели и представления

Пример, как реализовать Model-View-Presenter с PHP

Примечание. Модель в реальном сценарии не является классом, а абстракционным слоем, который содержит много классов для работы с логикой приложения. Я бы назвал его «Модель» для демонстрационных целей.

 class Model { public function getSomeStuff() { return array('foo' => 'bar'); } } class View { public function render($path, array $vars = array()) { ob_start(); extract($vars); require($path); return ob_get_clean(); } } class Presenter { private $model; private $view; public function __construct(Model $model, View $view) { $this->model = $model; $this->view = $view; } public function indexAction() { $data = $this->model->getSomeStuff(); // Variables are set now, render the HTML // And returns as a string return $this->view->render('path/to/template.phtml', $data); } } 

Файл: template.phtml

 <!DOCTYPE html> <html> <head> <title>...</title> </head> <body> <?php foreach($vars as $key => $value): ?> <p><?php echo $key; ?> : <?php echo $value; ?></p> <?php endforeach; ?> </body> </html> 

И использование:

 $model = new Model(); $view = new View(); $presenter = new Presenter($service, $view); echo $presenter->indexAction(); 

Обратите внимание, что это очень упрощенный пример. В реальном сценарии любое приложение на основе MVP СЛЕДУЕТ также реализовывать такие вещи, как: Router, SPL class autoloader.

MVP и MVC оба предназначены для графических приложений. Большинство фреймворков PHP используют «MVC» больше как модное слово . Фактическая реализация с немыми моделями (просто база данных), неактивные представления (= шаблоны) и оркестровые контроллеры фактически соответствуют MVP. И функциональные контроллеры часто работают как ведущие в любом случае, перетаскивая данные из моделей в представления. (В правильном MVC модель и представление взаимодействуют больше, причем представление фактически является активным компонентом).

Но в любом случае есть несколько рамок, которые действительно знают о новой терминологии и шаблоне.

Проверьте эту библиотеку Mutant Vole PHP

На мой взгляд, Lion Framework (www.lionframework.org) является самой зрелой реализацией MVP в наши дни.