CakePHP - Manual/Beginning/UnderstandingMVC /wiki/Manual/Beginning/UnderstandingMVC History/revisions of CakePHP/Manual/Beginning/UnderstandingMVC en-us 2007-11-27 23:41:33 /wiki/Manual/Beginning/UnderstandingMVC/show?time=2007-11-27+23%3A41%3A33 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.beginning.understandingmvc" href="/wiki/Manual/Beginning/UnderstandingMVC" class="">/Manual&nbsp;/&nbsp;Beginning&nbsp;/&nbsp;Understanding&nbsp;MVC</a> за <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+23%3A41%3A33">2007-11-27 23:41:33</a> и <a href="/wiki/Manual/Beginning/UnderstandingMVC">2007-12-23 21:10:20</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Почему используется именно MVC? Потому что&nbsp;это испытанный шаблон проектирования приложений, который делает ваше приложение модульным и&nbsp;быстрым. Разделение приложения на&nbsp;Модель, Контроллер и&nbsp;Отображение делает его&nbsp;&laquo;легким на&nbsp;подъем&raquo;. Очень легко добавить какие-то новые возможности и&nbsp;молниеносно изменить внешний вид&nbsp;приложения. Модульность позволяет работать над&nbsp;одним проектом сразу нескольким разработчикам. Так&nbsp;же&nbsp;ничто не&nbsp;мешает внести изменения в&nbsp;часть приложения без&nbsp;какого-либо ущерба другой его&nbsp;части.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Почему используется именно MVC? Потому что&nbsp;это исптанный шаблон проектирования приложений, который делает ваше приложение модульным и&nbsp;быстрым. Разделение приложения на&nbsp;Модель, Контроллер и&nbsp;Отображение делает его&nbsp;&laquo;легким на&nbsp;подъем&raquo;. Очень легко добавить какие-то новые возможности и&nbsp;молниеносно изменить внешний вид&nbsp;приложения. Модульность позволяет работать над&nbsp;одним проектом сразу нескольким разработчикам. Так&nbsp;же&nbsp;ничто не&nbsp;мешает внести изменения в&nbsp;часть приложения без&nbsp;какого-либо ущерба другой его&nbsp;части.</div></div> 2007-11-27 22:49:14 /wiki/Manual/Beginning/UnderstandingMVC/show?time=2007-11-27+22%3A49%3A14 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Beginning/UnderstandingMVC" class="">/Manual&nbsp;/&nbsp;Beginning&nbsp;/&nbsp;Understanding&nbsp;MVC</a> за <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+22%3A49%3A14">2007-11-27 22:49:14</a> и <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+23%3A41%3A33">2007-11-27 23:41:33</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">При&nbsp;написании программы на&nbsp;CakePHP принято следовать шаблону MVC&nbsp;(Модель-Отображение-Контроллер). Программирование с&nbsp;применением этой модели разделяет ваше приложение на&nbsp;три основные части. Модель оперирует информацией Базы Данных, Отображение создает страницу с&nbsp;информацией из&nbsp;модели, а&nbsp;Контроллер обрабатывает запросы, сделанные пользователями.<br /> <div style="float:center; text-align:center"><span class="missingpage" title="404: //files?get=requests.png">file:requests.png</span><br /> Изображение 1: Основные запросы MVC</div><br /> Рисунок 1 демонстрирует каркас MVC&nbsp;запроса в&nbsp;Cake. Рассмотрим простейший пример. Предположим пользователь Иван нажал на&nbsp;ссылку &laquo;Купить пирог!&raquo;, эта&nbsp;ссылка ведет на&nbsp;вашу страницу.<br /> <ol type="1"><li> Иван нажимает на&nbsp;ссылку <a href="http://www.example.com/cakes/buy" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />http://www.example.com/cakes/buy</a>, и&nbsp;его браузер делает запрос к&nbsp;вашему веб-серверу. </li><li> Диспетчер проверяет запрошенный адрес (/cakes/buy) и&nbsp;запускает необходимый Контроллер. </li><li> Контроллер обрабатывает свою логику, например он&nbsp;проверяет вошел ли&nbsp;Иван в&nbsp;систему (залогинился ли&nbsp;он на&nbsp;сайте). </li><li> Контроллер также взаимодействует с&nbsp;Моделями для&nbsp;обмена информацией. Как&nbsp;правило, Модели &mdash; это&nbsp;таблицы базы данных, но&nbsp;также вполне могут быть <a href="http://ru.wikipedia.org/wiki/LDAP" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />LDAP</a> записями, <a href="http://ru.wikipedia.org/wiki/RSS" target="_blank" title="Внешняя ссылка (откроется в новом окне)" class="outerlink"><img src="/wiki_/themes/cake/icons/web.gif" alt="" border="0" />RSS</a>-лентами или&nbsp;простыми файлами. В&nbsp;данном случае Контроллер использует Модель для&nbsp;того чтобы выбрать из&nbsp;базы данных информацию о&nbsp;последней покупке Ивана. </li><li> После того как&nbsp;Контроллер обработал данные &mdash; он&nbsp;передает их&nbsp;в Отображение. Отображение принимает данные и&nbsp;преобразует их&nbsp;в готовые страницы для&nbsp;отображения пользователям. Обычно результатом работы отображения является HTML документ, но&nbsp;не трудно получить PDF, XML&nbsp;документы или&nbsp;объект JSON. Все&nbsp;зависит от&nbsp;ваших потребностей. </li><li> Отображение использует информацию из&nbsp;Контроллера для&nbsp;того чтобы создать готовый документ для&nbsp;пользователя. Иван видит в&nbsp;браузере готовую страницу.</li></ol> Почти каждый запрос в&nbsp;вашем веб-приложении проходит по&nbsp;этой схеме. Некоторые подробности этого процесса мы&nbsp;узнаем позже, а&nbsp;пока запомните это.<a name="h71-1"></a><h2>Преимущества</h2> Почему используется именно MVC? Потому что&nbsp;это исптанный шаблон проектирования приложений, который делает ваше приложение модульным и&nbsp;быстрым. Разделение приложения на&nbsp;Модель, Контроллер и&nbsp;Отображение делает его&nbsp;&laquo;легким на&nbsp;подъем&raquo;. Очень легко добавить какие-то новые возможности и&nbsp;молниеносно изменить внешний вид&nbsp;приложения. Модульность позволяет работать над&nbsp;одним проектом сразу нескольким разработчикам. Так&nbsp;же&nbsp;ничто не&nbsp;мешает внести изменения в&nbsp;часть приложения без&nbsp;какого-либо ущерба другой его&nbsp;части.<br /> Если вы&nbsp;никогда не&nbsp;создавали приложения, пользуясь этой архитектурой, то&nbsp;вам понадобится некоторое время чтобы привыкнуть, но&nbsp;мы уверены, когда вы&nbsp;создадите первый проект на&nbsp;Cake, то&nbsp;уже не&nbsp;захотите возвращаться к&nbsp;старым методам.</div><br /> <b>Удалено:</b><br /> <div class="deletions">При&nbsp;написании программы на&nbsp;<span class="missingpage">Cake&nbsp;PHP</span><a href="/wiki/CakePHP/edit?add=1" title="Создать эту страницу">?</a> принято следовать шаблону MVC&nbsp;(Модель-Отображение-Контроллер). Программирование с&nbsp;применением этой модели разделяет ваше приложение на&nbsp;три основные части. Модель оперирует информацией Базы Данных, Отображение создает страницу с&nbsp;информацией из&nbsp;модели, а&nbsp;Контроллер обрабатывает запросы, сделанные пользователями.<br /> <div style="float:center; text-align:center"><span class="missingpage" title="404: //files?get=requests.png">file:requests.png</span></div></div></div> 2007-11-27 00:11:33 /wiki/Manual/Beginning/UnderstandingMVC/show?time=2007-11-27+00%3A11%3A33 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Beginning/UnderstandingMVC" class="">/Manual&nbsp;/&nbsp;Beginning&nbsp;/&nbsp;Understanding&nbsp;MVC</a> за <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+00%3A11%3A33">2007-11-27 00:11:33</a> и <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+22%3A49%3A14">2007-11-27 22:49:14</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><div style="float:center; text-align:center"><span class="missingpage" title="404: //files?get=requests.png">file:requests.png</span></div></div><br /> <b>Удалено:</b><br /> <div class="deletions"><strong>Тут будет картинка, когда вспомню, как&nbsp;ее&nbsp;вставить</strong></div></div> 2007-11-27 00:11:20 /wiki/Manual/Beginning/UnderstandingMVC/show?time=2007-11-27+00%3A11%3A20 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Beginning/UnderstandingMVC" class="">/Manual&nbsp;/&nbsp;Beginning&nbsp;/&nbsp;Understanding&nbsp;MVC</a> за <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+00%3A11%3A20">2007-11-27 00:11:20</a> и <a href="/wiki/Manual/Beginning/UnderstandingMVC?time=2007-11-27+00%3A11%3A33">2007-11-27 00:11:33</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h71-1"></a><h1>Понимание архитектуры MVC</h1></div><br /> <b>Удалено:</b><br /> <div class="deletions"><a name="h71-1"></a><h1>Понимание архитектуры MVC&nbsp;(Модель-Отображение-Контроллер)</h1></div></div>