Доктрина (PHP)
Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с предметом , что потенциально препятствует тому, чтобы статья была проверяемой и нейтральной . ( декабрь 2019 г. ) |
Стабильная версия | 2.11.2
|
---|---|
Репозиторий | |
Написано в | PHP |
Операционная система | Кросс-платформенный |
Тип | объектно-реляционного отображения Структура |
Лицензия | С |
Веб-сайт | www |
Проект Doctrine (или Doctrine ) — это набор библиотек PHP, в первую очередь ориентированных на предоставление служб персистентности и связанных с ними функций. Его наиболее известный [ по мнению кого? ] Проекты — это объектно-реляционный преобразователь (ORM) и уровень абстракции базы данных, на котором он построен.
Одной из ключевых особенностей Doctrine является возможность писать запросы к базе данных на языке запросов Doctrine (DQL), объектно-ориентированном диалекте SQL.
Разработчики двух основных PHP-фреймворков, Symfony и Laminas, имеют официальную готовую поддержку Doctrine, а сторонние пакеты Doctrine доступны для Laravel , CodeIgniter и других.
Демонстрация использования
[ редактировать ]Сущности в Doctrine 2 — это облегченные объекты PHP, содержащие постоянные свойства. Постоянное свойство — это переменная экземпляра сущности, которая сохраняется в базе данных и извлекается из базы данных с помощью возможностей сопоставления данных Doctrine через Entity Manager — реализацию шаблона сопоставления данных :
$user = new User();
$user->name = "john2";
$user->password = "doe";
//$entityManager is an instance of Doctrine\ORM\EntityManagerInterface, usually obtained through dependency injection
$entityManager->persist($user);
$entityManager->flush();
echo "The user with id $user->id has been saved.";
Doctrine 1.x следует шаблону активной записи для работы с данными, где класс соответствует таблице базы данных . Например, если программист захочет создать новый объект «Пользователь» в базе данных, ему больше не нужно будет писать SQL- запросы, а вместо этого он сможет использовать следующий PHP-код:
$user = new User();
$user->name = "john";
$user->password = "doe";
$user->save();
echo "The user with id $user->id has been saved.";
Функции
[ редактировать ]Одной из особенностей Doctrine является низкий уровень конфигурации, необходимый для запуска проекта. Doctrine может генерировать классы объектов из существующей базы данных, а затем программист может указывать связи и добавлять собственные функции к сгенерированным классам. Нет необходимости создавать или поддерживать сложные схемы баз данных XML , как это наблюдается во многих других средах.
Еще одной ключевой особенностью Doctrine является возможность опционально писать запросы к базе данных на объектно -ориентированном диалекте SQL, называемом DQL (язык запросов Doctrine), вдохновленном Hibernate HQL . Альтернативно, QueryBuilder ( Класс Doctrine_Query в Doctrine 1.x) позволяет создавать запросы через свободный интерфейс . Эти интерфейсы предоставляют разработчикам мощные альтернативы SQL, которые сохраняют гибкость и при этом позволяют переключать серверные части базы данных, не требуя дублирования кода.
Однако явное написание запросов не всегда необходимо, поскольку Doctrine автоматически выполняет соединения и извлекает связанные объекты. Небольшие проекты можно легко создавать без написания запросов.
Другими примечательными особенностями Доктрины являются:
- поддержка перехватчиков (методов, которые могут проверять или изменять входные и выходные данные базы данных) и прослушивателей событий для структурирования бизнес-логики;
- наследование агрегации столбцов (похожие объекты могут храниться в одной таблице базы данных, при этом один столбец типа определяет подтип конкретного объекта - при выполнении запроса всегда возвращается правильный подкласс);
- платформа кэширования, использующая несколько бэкэндов, таких как memcached , SQLite или APC ;
- ACID- транзакции;
- миграция баз данных;
- функция «компиляции» для объединения многих файлов PHP платформы в один, чтобы избежать снижения производительности, обычно возникающего при включении множества файлов PHP платформы.
История
[ редактировать ]Доктрину основал Конста Вестеринен, также известный как zYne- . Первоначальное принятие проекта было сделано 13 апреля 2006 года. По мере того, как проект становился более зрелым, его внедрение начало набирать обороты. Вскоре сообщество стало активным, и разработка регулярно получала помощь, в том числе от проекта Google Summer of Code .
Доктрина 1.0.0 была выпущена 1 сентября 2008 г. [1]
Первая стабильная версия Doctrine 2.0 была выпущена 22 декабря 2010 года, после 2,5 лет специальной разработки, начавшейся в начале 2008 года. [2]
Влияния
[ редактировать ]На Doctrine повлияли десятки проектов и множество разных людей. Наибольшее влияние оказали Java ORM решение Hibernate и архитектура ActiveRecord, используемая в Ruby on Rails . Цель проекта Doctrine — создание столь же мощного решения на языке PHP для высоконагруженных веб-сайтов, которым необходимо поддерживать постоянный поток посетителей. Doctrine ORM можно использовать для повышения производительности таких веб-сайтов.
См. также
[ редактировать ]- Список программного обеспечения объектно-реляционного картографирования
- Symfony , фреймворк веб-приложений , который по умолчанию использует Doctrine.
- CodeIgniter , фреймворк с интеграцией, официально поддерживаемый командой Doctrine.
- DataEase , чей язык запросов также называется DQL
- Skipper , инструмент визуализации для Doctrine
- Цепочка методов