2014-03-02 30 views
1

我知道一些HTML,PHP,CSS和MySQL。我还没有掌握的东西是框架。我正在尽全力去了解他们是什么以及他们做了什么,但是对于我而言,我无法理解它。什么是框架?什么是教义2?

请有人可以用简单的方法解释框架和Doctrine 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?

主义是对象关系映射器。它基本上允许您在关系数据库中插入/更新/选择/删除对象,或通过类生成/更新表格。

让我们假设一个简单的成员表(我不能发表图片)

ID |名称|电子邮件|年龄

http://i.stack.imgur.com/V443D.png

通常情况下,你会写一个查询,例如,插入表中的东西。如:

INSERT INTO member VALUES ('Andy', '[email protected]', 30); 

什么的ORM允许你这样做,是插入一个映射对象到表中。表格中的值将与通常通过查询插入它们的方式一样。 让我们来看看学说的一个非常简单的例子,在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 */ 
} 

上述类映射(标),并介绍哪些部分将被视为在数据库列。简单地说:映射的类中的变量将作为数据库中的列显示。你可以告诉我的映射这些变量,你想要列的数据类型(字符串/整数等)这个类代表我们的成员表(上图)。

现在在我的代码中,我可以调用doctrine实体管理器。我们可以创建一个新的成员对象,启动变量(姓名,电子邮件,年龄),并把它保存到数据库中:

$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更好地维护您的(中/大)应用程序。