Доктрина (PHP) - Doctrine (PHP)
Стабильный выпуск | 2.8.2 / 17 февраля 2021 г .
|
---|---|
Репозиторий | |
Написано в | 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 Query Language), на основе Hibernate HQL . С другой стороны, класс QueryBuilder ( Doctrine_Query в Doctrine 1.x) позволяет создавать запросы через свободный интерфейс . Эти интерфейсы предоставляют разработчикам мощные альтернативы SQL, которые сохраняют гибкость и по-прежнему позволяют переключать серверные части базы данных, не требуя дублирования кода.
Однако явное написание запросов не всегда необходимо, поскольку Doctrine выполняет соединения и выбирает связанные объекты автоматически. Небольшие проекты можно легко создавать без написания запросов.
Другие примечательные особенности Doctrine:
- поддержка ловушек (методов, которые могут проверять или изменять ввод и вывод базы данных) и прослушивателей событий для структурирования бизнес-логики;
- наследование агрегирования столбцов (похожие объекты могут храниться в одной таблице базы данных, при этом один столбец типа определяет подтип конкретного объекта - при выполнении запроса всегда возвращается правильный подкласс);
- фреймворк кэширования, использующий несколько бэкэндов, таких как memcached , SQLite или APC ;
- ACID транзакции;
- миграции баз данных;
- функция "компиляции" для объединения многих PHP-файлов фреймворка в один, чтобы избежать снижения производительности, обычно вызываемого включением множества PHP-файлов фреймворка.
История
Доктрина была основана Констой Вестериненом, также известным как zYne- . Первоначальное обязательство по проекту было принято 13 апреля 2006 г. По мере того, как проект становился более зрелым, его принятие начало набирать обороты. Вскоре сообщество было активным, и разработка получала регулярные взносы, в том числе от проекта Google Summer of Code .
Doctrine 1.0.0 была выпущена 1 сентября 2008 года.
Первая стабильная версия Doctrine 2.0 была выпущена 22 декабря 2010 года после 2,5 лет целенаправленной разработки, начавшейся в начале 2008 года.
Влияния
На Doctrine повлияли десятки проектов и множество разных людей. Наибольшее влияние оказали Java ORM Hibernate и ActiveRecord от Ruby on Rails . Оба этих ORM- решения реализовали полнофункциональное решение на языках Java и Ruby . Цель проекта Doctrine - создать не менее мощное решение для языка PHP для высоконагруженных веб-сайтов, которые должны поддерживать постоянный поток посетителей. Doctrine ORM можно использовать для повышения производительности таких веб-сайтов.
Смотрите также
- Propel (PHP)
- Список программ объектно-реляционного сопоставления
- Symfony , фреймворк для веб-приложений, который по умолчанию использует Doctrine.
- CodeIgniter , фреймворк с интеграцией, официально поддерживаемый командой Doctrine
- DataEase , язык запросов которого также называется DQL
- Skipper , инструмент визуализации для Doctrine
- Цепочка методов