Доброго времени суток. Многие из вас, кто так или иначе соприкасался с веб-разработкой, знают о таком удобном способе обращения к БД как ActiveRecord, чуть меньше человек согласиться, что это действительно очень удобно, примерно столько же понимает, что это далеко не всегда лучшее решение для проекта из соображений производительности. И это действительно так, но можно много чего придумать для избавления от этих проблем: кеширование всего и вся, различные архитектурные ухищрения и т.д.
Именно различными улучшениями AR мы и займемся на протяжении всего цикла этих статей :)
Если уж совсем подробно: мы будем вместе писать реализацию AR (да, с оркестром и балеринами), надстраивая его над PDO и стараясь максимально свести на нет проблемы производительности.
«В каком смысле вместе?», можете спросить вы, да, буквально таки вместе :) Я буду максимально подробно расписывать что и почему я сделал, каждая часть будет сопровождаться одним коммитом в репозитории на Github'е, то бишь можно будет проследить ход проектирования до мелочей.
Так же приветствуется конструктивная критика, пожелания и предложения в комментариях. Это вводная статья, которая не подвержена специфике следующих частей, ибо вводная и даже пробная, так как еще не известно будет ли вам интересен такой подход к написанию Open-Source кода. На этом со вступлением закончено.
Собираем продукты
300 грамм PHP 5.3.9 (будут анонимные функции, да)
200 грамм PDO и драйвер к вашей любимой БД (из тех, что поддерживаются), я буду использовать pdo_mysql
Немного креатива
И щепотка времени
Смешать, но не взбалтывать
Структура:
/ActiveRecord
DBConnection.php
ActiveRecordFinder.php
ActiveRecordModel.php
QueryBuilder.php
Пример использования, к которому мы будем стремиться:
запись/обновление
$topic = new TopicModel;
$topic->author = "Human";
$topic->title = "Our beautiful topic";
$topic->body = "...";
$topic->save();
поиск/чтение
$topics = new TopicModel;
$topics->find("all", array("published" => true));
То бишь совершенно стандартное использование AR :)
Знаю что тут все довольно мутно и пока что не понятно описано, но прошу вас выразить свое желание или не желание читать этот цикл статей. Если народу интересно, то уже завтра к вечеру будет первая часть :)
Удачи ;)
Ну? И где продолжение? Очень нужная информация