Я мог бы сказать вам здесь, что основа есть, но по следующей ссылке описывает его: What is a software framework?
Доктрина является объектом реляционной картографа. Он в основном позволяет вам вставлять/обновлять/выбирать/удалять объект в реляционной базе данных или создавать/обновлять таблицы через классы.
Давайте предположим простую таблицу член (я не могу размещать изображения)
идентификатор | имя | электронная почта | возраст
http://i.stack.imgur.com/V443D.png
Как правило, вы бы написать запрос, например, вставить что-то в таблице. Такие, как:
INSERT INTO member VALUES ('Andy', '[email protected]', 30);
Что ОРМ позволяет сделать, это вставить отображенный объект в таблицу. Значения в таблице будут отображаться так же, как вы обычно видели бы их, вставив их через запрос. Давайте посмотрим на очень простом примере учения в рамках Symfony2:
namespace ExampleProject\MemberBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Member
* @ORM\Table()
* @ORM\Entity
*/
class Member {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="age", type="integer", length=3)
*/
private $age;
/* getters and setters here */
}
выше класс сопоставляется (аннотированный) и описывает, какие части будут рассматриваться в качестве столбцов в базе данных. Просто сказано: переменные внутри класса, которые отображаются, будут отображаться как столбцы в базе данных. И вы можете указать, что я сопоставляю эти переменные, какой тип данных вы хотите иметь в столбцах (string/integer и т. Д.). Этот класс представляет нашу таблицу Member (изображение выше).
Теперь в моем коде я могу вызвать диспетчер сущности доктрины. Мы можем создать новый объект-членов, инициировать переменные (имя, адрес электронной почты, возраст) и сохранить его в базу данных:
$em = $this->getDoctrine()->getEntityManager();
$member = new Member;
$member->setId($id);
$member->setName($name);
$member->setEmail($email);
$member->setAge($age);
$em->persist($member);
$em->flush();
Как вы можете видеть, все, что нам нужно сделать, это сохранить объект в базе данных. Это даст нам тот же результат, что и выполнение запроса, упомянутого выше. Теперь в фоновом режиме ORM также выполняет запрос. Вы можете включить параметр, в котором вы можете увидеть фактический запрос.
Теперь это может выглядеть совершенно ненужным и много работы. Но это сэкономит вам много времени. Он более ориентирован на объекты, и вы сможете поддерживать ваше (среднее/большое) приложение намного лучше, чем без использования ORM.
См. Этот ответ: http://stackoverflow.com/questions/4507506/what-is-a-web-framework-how-does-it-compare-with-lamp – mcw
Доктрина - [Объектно-реляционный картограф ] (https://duckduckgo.com/?q=object+relational+mapper) - если вы просматриваете этот термин в Интернете, вы найдете то, что вам нужно. – halfer
Рамки - это предварительно написанный код, который вы можете использовать в своих проектах. – iCode