2014-03-02 7 views
1

Я знаю некоторые HTML, PHP, CSS и MySQL. Что-то, что я еще не понял, - это рамки. Я изо всех сил пытаюсь понять, что они представляют и что они делают, но для меня жизнь я не могу понять.Что такое структура? И что такое Учение 2?

Пожалуйста, кто-нибудь может объяснить рамки и Доктрину 2 в очень простой способ, так как я не знаю, с чего начать, но обратите внимание, что они обязательно необходимы.

+0

См. Этот ответ: http://stackoverflow.com/questions/4507506/what-is-a-web-framework-how-does-it-compare-with-lamp – mcw

+0

Доктрина - [Объектно-реляционный картограф ] (https://duckduckgo.com/?q=object+relational+mapper) - если вы просматриваете этот термин в Интернете, вы найдете то, что вам нужно. – halfer

+0

Рамки - это предварительно написанный код, который вы можете использовать в своих проектах. – iCode

ответ

7

Я мог бы сказать вам здесь, что основа есть, но по следующей ссылке описывает его: 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.

Смежные вопросы