Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$string->toLowerCase()->upperCaseFirst()->replace('_', ' ')->print();
$instance->set('name', 'Foo')->setDescription('Bar')->setBasePrice(32.95);
try
{
$user = ORM::factory('User');
$user->username = 'invalid username';
$user->save();
}
catch (ORM_Validation_Exception $e)
{
$errors = $e->errors();
}
он (программист) должен думать о логике работы приложения, а не об очередном UPDATE-запросе.
На мой взгляд, чтобы код легко читался, он (помимо, разумеется, стандартов кодирования и понятности алгоритмов) должен быть максимально приближен к естественному языку.
если использовать запись «сырых» данных, используя, например, $instance->price = 12.95
При смене одной ORM на другую в любом случае придется переделывать бизнес-логику
он (программист) должен думать о логике работы приложения, а не об очередном UPDATE-запросе.
Но я, разумеется, понимаю, что это нарушение заповеди «не храни логику в модели» :)
Начинающие программисты (особенно в веб-программировании, где аббревиатура MVC стала популярна) очень часто трактуют архитектурную модель MVC как пассивную модель MVC. В этом случае модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате код моделей по факту является средством получения данных из СУБД, а контроллер представляет собой типичный модуль, наполненный бизнес-логикой, или скрипт в терминологии веб-программирования. В результате такого понимания MVC разработчики стали писать код, который Pádraic Brady, известный в кругах сообщества Zend Framework, охарактеризовал как ТТУК — «Толстые тупые уродливые контроллеры» (Fat Stupid Ugly Controllers):
Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, проверял, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.
Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика. В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы.
$instance->load($entity_id)
->setName('Foo')
->setDescription('Bar')
->setBasePrice(250)
->save();
Плюс магического, в частности, в том, что не нет строгого набора данных.
Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях