4 广播、电视媒体特性分析

4 广播、电视媒体特性分析

ID:10090133

大小:55.50 KB

页数:9页

时间:2018-05-25

4  广播、电视媒体特性分析_第1页
4  广播、电视媒体特性分析_第2页
4  广播、电视媒体特性分析_第3页
4  广播、电视媒体特性分析_第4页
4  广播、电视媒体特性分析_第5页
资源描述:

《4 广播、电视媒体特性分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入理解Magento–第四章–模型和ORM基础深入理解Magento作者:AlanStorm翻译:HailongZhang第四章–模型和ORM基础对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分。对于Magento来说,模型占据了一个更加重要的位置,因为它常常包含了一部分商业逻辑代码(可以说它对,也可以说它错)。这些代码在其他的MVC框架中往往出现在控制器或者帮助函数中。传统的PHPMVC架构中的模型本来MVC的定义就不是很清晰,不同的人有不同的看法,而对于模型的定义争议就更多了。在MVC模式被广泛采用之前

2、,PHP程序员往往通过SQL语句直接操作数据库。也有些程序员通过一个SQL抽象层来操作数据库(比如AdoDB)。程序员往往关注SQL语句本身,而不是和数据相关的对象。虽然直接操作SQL的方式一直被病诟,但是很多PHP框架还是以SQL为中心的。模型层提供了一系列对象,抽象/封装了数据操作,但是程序员最终还是需为模型层对象写SQL语句操作数据库。还有一些框架回避了SQL,使用了对象关系映射(ObjectRelationalMapping,ORM)来解决这个问题。使用这个方法的话,程序员不用关注SQL,而只需要和对象打交道。我们可以操作

3、一个对象的属性,当“Save”方法被调用的时候,对象的属性会作为数据自动的被写入数据库。有些ORM框架会根据数据表的信息自动推测对象的属性,也有框架要求用户显示的生命对象属性和表的关系。比较有名的ORM框架有ActiveRecord等等。【译者注:ActiveRecord源自RubyonRails,不过现在PHP也有了】关于ORM的概念,我就解释到这里。但是和许多计算机领域的其他概念一样,ORM的定义也越来越模糊了。我不想在这片文章中讨论关于ORM的争议,所以我说的ORM就是那个最基本的ORM概念。Magento的模型Magent

4、o理所当然的也追随潮流应用了ORM。虽然Magento自带的Zend框架提供了SQL抽象层,但是在大多数情况下我们将通过Magento自带的模型和我们自己的模型来进行数据访问。他和视图层(View)一样,Magento的模型层也不是简单的ORM,而是一个高度灵活,高度抽象甚至有点令人费解。解剖Magento的模型大部分的Magento模型分为两类。第一类是基本的ActiveRecord类型,一张表一个对象的模型。第二类是EntityAttributeValue(EAV)模型。【译者注:EAV翻译成“实体属性值”有点词不达意,还是就

5、叫EAV的好】Magento自己定义了一个数据类型叫做模型集合(ModelCollection)。顾名思义,模型集合就是一个对象里面包含了很多模型对象。Magento的创造者Varien团队实现了PHP类库的标准接口,“IteratorAggregate”,“Countable”。这样模型集合就能调用这些方法,这也是模型集合和数组的区别。Magento的模型并不直接访问数据库。每一个模型都有一个资源模型(ResourceModel),每一个资源模型拥有两个适配器(Adapter),一个读,一个写。这样的话逻辑模型和数据库访问就分开

6、了,所以从理论上讲更改底层数据库只需要重写适配器就可以了,所有上层代码都不需要更改。创建一个基本模型【译者注:从这一章开始我用我自己的例子替换了Alan的例子】继续我们HelloWorld的例子。在HelloWorld模块中创建BlogController.php如下classZhlmmc_Helloworld_BlogControllerextendsMage_Core_Controller_Front_Action{publicfunctionindexAction(){echo'HelloBlog';}}访问以下URLhtt

7、p://127.0.0.1/Magento/helloworld/blog你应该看到“HelloBlog”输出。创建数据表我们可以通过Magento自带的方法创建或者修改数据库,但是为了不引入过多新内容,我们暂且手工创建一张表。在你的数据库中执行以下语句CREATETABLE`blog_posts`(`blogpost_id`int(11)NOTNULLauto_increment,`title`text,`post`text,`date`datetimedefaultNULL,`timestamp`timestampNOTNUL

8、LdefaultCURRENT_TIMESTAMP,PRIMARYKEY(`blogpost_id`));INSERTINTO`blog_posts`VALUES(1,'MyNewTitle','Thisisablogpost','2009-07-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。