关 键 词:
集成 关系 对象 一个 数据库 访问 使用 可以 Propel 方法
对象关系映射(ORM)
数据库是关系型数据库。 PHP5和Symfony是面向对象的。 为了用面向对象的方法访问数据库, 必须用一个接口来表示对象之间的逻辑关系。 这个接口就叫作对象关系映射或者ORM。
ORM是由对象组成,用来访问数据和保持事务关系。 An ORM is made up of objects that give access to data and keep business rules within themselves.
对象/关系的抽象层的其中一个优点是可以不用直接去访问数据库。 它会使用经过优化的模型对象来访问当前的数据库。
这就意味着在项目中期换一套数据库将是很简单的事情。想象一下当你必须为程序写一个原型的时候,客户并不能确定哪种数据库最适合他们。 你可以先使用SQLite来开发程序, 当客户决定使用MySQL, PostgreSQL或者Oracle的时候,我们只要在配置文件中稍作修改就可以正常工作了。
抽象层封装了数据逻辑。 其他程序并不需要了解SQL的查询语句,却依旧能轻松的访问数据库。 那些对数据库开发者专家也很清楚的知道该做些什么。
使用对象而非记录, 用类而非表,还有其他益处: 你能为你的表增加一些新的存取方法。 例如, 你有一个名叫Client的表,有两个字段,分别是FisrstName和LastName, 你也许想直接获得一个完整的姓名。 在面向对象中, 为一个Client类添加一个访问方法,就像这样:
[php]
public function getName()
{
return $this->getFirstName.' '.$this->getLastName();
}
所有重复数据访问功能和数据的业务逻辑都可以在对象中维护。 例如,有一个用来生成对象的ShoppingCart类。 我们在结帐时想获得一个总价, 你可以加一个 getTotal() 方法,就像这样:
[php]
public function getTotal()
{
$total = 0;
foreach ($this->getItems() as $item)
{
$total += $item->getPrice() * $item->getQuantity();
}
return $total;
}
就这好了,想象一下要写多长的SQL语句才能完成同样的事情!
Propel,另一个开源项目,是当前最好的基于PHP5的对象/关系抽象层。 Symfony框架无缝集成了Propel, 所以本书大多数的数据处理描述都使用了Propel的语法。 本书将描述如何使用Propel对象, 但是更详细的资料可以参考Propel的网站(http://propel.phpdb.org/trac/)。
欢迎进入PHP开发资源论坛讨论。
数据库是关系型数据库。 PHP5和Symfony是面向对象的。 为了用面向对象的方法访问数据库, 必须用一个接口来表示对象之间的逻辑关系。 这个接口就叫作对象关系映射或者ORM。
ORM是由对象组成,用来访问数据和保持事务关系。 An ORM is made up of objects that give access to data and keep business rules within themselves.
对象/关系的抽象层的其中一个优点是可以不用直接去访问数据库。 它会使用经过优化的模型对象来访问当前的数据库。
这就意味着在项目中期换一套数据库将是很简单的事情。想象一下当你必须为程序写一个原型的时候,客户并不能确定哪种数据库最适合他们。 你可以先使用SQLite来开发程序, 当客户决定使用MySQL, PostgreSQL或者Oracle的时候,我们只要在配置文件中稍作修改就可以正常工作了。
抽象层封装了数据逻辑。 其他程序并不需要了解SQL的查询语句,却依旧能轻松的访问数据库。 那些对数据库开发者专家也很清楚的知道该做些什么。
使用对象而非记录, 用类而非表,还有其他益处: 你能为你的表增加一些新的存取方法。 例如, 你有一个名叫Client的表,有两个字段,分别是FisrstName和LastName, 你也许想直接获得一个完整的姓名。 在面向对象中, 为一个Client类添加一个访问方法,就像这样:
[php]
public function getName()
{
return $this->getFirstName.' '.$this->getLastName();
}
所有重复数据访问功能和数据的业务逻辑都可以在对象中维护。 例如,有一个用来生成对象的ShoppingCart类。 我们在结帐时想获得一个总价, 你可以加一个 getTotal() 方法,就像这样:
[php]
public function getTotal()
{
$total = 0;
foreach ($this->getItems() as $item)
{
$total += $item->getPrice() * $item->getQuantity();
}
return $total;
}
就这好了,想象一下要写多长的SQL语句才能完成同样的事情!
Propel,另一个开源项目,是当前最好的基于PHP5的对象/关系抽象层。 Symfony框架无缝集成了Propel, 所以本书大多数的数据处理描述都使用了Propel的语法。 本书将描述如何使用Propel对象, 但是更详细的资料可以参考Propel的网站(http://propel.phpdb.org/trac/)。
相关文章
图文推荐
论 坛 资 源
·PHP读取jar文件并生成jad文件
·php注入专题
·php-fpm文档中文翻译
·php扩展开发学习笔记 1
·php设计模式介绍之单件模式 [3]
·php设计模式介绍之单件模式 [2]
·php设计模式介绍之单件模式 [1]
·Zope的优点及和Apache+PHP+MySQL的比较
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
·php注入专题
·php-fpm文档中文翻译
·php扩展开发学习笔记 1
·php设计模式介绍之单件模式 [3]
·php设计模式介绍之单件模式 [2]
·php设计模式介绍之单件模式 [1]
·Zope的优点及和Apache+PHP+MySQL的比较
·PHP面向对象、类经典教程[2]
·PHP面向对象、类经典教程[1]
热门技术文档
·PHP读取jar文件并生成jad文件
·PHP通过header实现文本文件的下载
·php注入专题
·php-fpm文档中文翻译
·php扩展开发学习笔记 8
·php扩展开发学习笔记 7
·php扩展开发学习笔记 6
·php扩展开发学习笔记 5
·php扩展开发学习笔记 4
·php扩展开发学习笔记 3
·PHP通过header实现文本文件的下载
·php注入专题
·php-fpm文档中文翻译
·php扩展开发学习笔记 8
·php扩展开发学习笔记 7
·php扩展开发学习笔记 6
·php扩展开发学习笔记 5
·php扩展开发学习笔记 4
·php扩展开发学习笔记 3
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
- · 3分钟快速了解 Delphi for PHP 特色 (中文), PDF档
- · 购买Delphi for PHP的五大理由, PDF档
- · Delphi for PHP 使用规格介绍, PDF档
- · Delphi for PHP 問答集 (From CodeGear)
- · Delphi for PHP 产品价格表
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容




