Доктрина (PHP) - Doctrine (PHP)

Доктрина
Doctrine logo white.png
Стабильный выпуск
2.8.2 / 17 февраля 2021 г . ; 3 месяца назад ( 2021-02-17 )
Репозиторий Отредактируйте это в Викиданных
Написано в PHP
Операционная система Кроссплатформенность
Тип Фреймворк объектно-реляционного сопоставления
Лицензия Массачусетский технологический институт
Веб-сайт www .doctrine-project .org Отредактируйте это в Викиданных

Проект 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 можно использовать для повышения производительности таких веб-сайтов.

Смотрите также

Рекомендации

Внешние ссылки