Mar*_*ooo 1 php mysql frameworks doctrine-orm
我知道一些HTML,PHP,CSS和MySQL.我还没有掌握的东西是框架.我正在尽我所能地阅读它们是什么以及它们做了什么,但对于我的生活,我无法理解它.
请允许有人以非常简单的方式解释框架和Doctrine 2 ,因为我不知道从哪里开始,但请注意它们肯定是必需的.
Mr.*_* AJ 11
我可以在这里告诉你框架是什么,但以下链接描述了它: 什么是软件框架?
Doctrine是一个对象关系映射器.它基本上允许您在关系数据库中插入/更新/选择/删除对象,或通过类生成/更新表.
我们假设一个简单的成员表(我无法发布图像)
id | 名字| 电子邮件| 年龄
http://i.stack.imgur.com/V443D.png
通常,您可以编写查询,例如,在表中插入内容.如:
INSERT Member VALUES ('Andy', 'andy@example.com', 30);
Run Code Online (Sandbox Code Playgroud)
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 */
}
Run Code Online (Sandbox Code Playgroud)
上面的类被映射(注释)并描述哪些部分将被视为数据库中的列.简单地说:映射的类中的变量将作为数据库中的列显示.您可以通过映射这些变量来确定,您希望列具有哪种数据类型(字符串/整数等)此类表示我们的成员表(上图).
现在在我的代码中,我可以调用doctrine实体管理器.我们可以创建一个新的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();
Run Code Online (Sandbox Code Playgroud)
如您所见,我们需要做的就是将对象保存在数据库中.在数据库内部,它将向我们显示与执行上面提到的查询相同的结果.现在在后台,ORM也执行查询(类似于我上面提到的查询).您可以启用一个设置,您可以在其中查看执行的实际查询.
现在这可能看起来非常不必要和很多工作.但它会为你节省很多时间.从源代码的角度来看,它更面向对象,并且您将能够比不使用ORM更好地维护您的(中/大)应用程序.此外,如果您当前将MySQL作为数据库,但是您希望将其更改为例如PostgreSQL,则可以对代码进行最少的更改,因为您的ORM将负责基础查询.所以从本质上讲,ORM是一个数据库抽象.
| 归档时间: |
|
| 查看次数: |
3465 次 |
| 最近记录: |