php框架设计
happen_zhang
想要过什么样的生活你自己决定
展开
-
[php]延迟加载和领域对象工厂
延迟加载 延迟加载是一个用于避免过多数据库查询的极为重要的机制,大部分web应用都需要注意对大量数据的操作和查询,所以延迟加载还是很有必要学习的。 在之前我们的建立的数据表和例子可以知道,每个Classroom对象可能包含多个Student对象,而每个Student对象又有可能和更多的Score类进行关联。那么,当从数据库中取出一个Classroom对象的时候,原创 2013-11-22 17:12:43 · 3131 阅读 · 0 评论 -
[php]标记对象
在Mapper中查找一个对象(findById)或者查找所有相关的对象(findAll())很简单,但要查找符合特定条件的对象时就需要创建特定的SQL语句来实现查询了。 比如查找user表中score大于10,查找user表中age等于18的Sql语句:SELECT * FROM `user` WHERE score > 10;SELECT * FORM `user` WH原创 2013-11-23 18:00:29 · 1410 阅读 · 0 评论 -
[php]标记映射和工作单元
标记映射 系统中可能存在两个值相同,但又不是同一个引用的对象,这样的重复对象可能是从数据库中读出来的,这样就造成了不必要的查询。 标记映射是一个类ObjectWatcher,它负责管理进程中的领域对象,以保证进程中不出现重复对象。 标记映射可以防止重新读取数据库查询数据,只有当ObjectWatcher类中不存在标记映射对应的对象时才去查询数据原创 2013-10-23 23:13:55 · 1418 阅读 · 0 评论 -
[php]Collection和持久化工厂
Mapper类中的findById($id)可以从数据库中取出指定id的一条数据,映射成一个对象返回。很多时候我们需要返回一个数据集合(findAll),那我们就需要一种数据结构来保存这些数据,在需要时映射成对象。既然一条数据映射成一个对象,那么一个数据集合就需要一个对象集合。可以把数据集合和对象集合放在一个类中,这样就方便处理数据到对象的映射了。我们把这个类命名为Collection,为了能更好原创 2013-10-20 00:38:00 · 2176 阅读 · 0 评论 -
[php]领域模型和数据映射器
业务逻辑层使用的是领域模型,因为它能使用数据映射器中的大部分模式。 “万物皆对象”,领域模型就是对于项目中各种个体的抽象表达,就是一个类。它常常被描述为一组属性及附加的操作。它们是做某些相关事的某个东西。 领域模型的复杂性主要来自于尝试使模型纯粹(pure),即将领域模型从应用中其他层中分离出来。把领域模型的参与者从表现层分离出来不难,但将这些参与者从数据原创 2013-10-16 00:25:34 · 3146 阅读 · 1 评论 -
[php]应用控制器(二)
为了能更清晰地了解应用控制器总体实现的结构,代码中需要使用到的类都已经在之前实现了,现在只剩下的是核心的部分:AppController和Controller。namespace demo\controller;/** * Controller */class Controller { private $appHelper; private function __cons原创 2013-10-12 00:24:22 · 1650 阅读 · 0 评论 -
[php]前端控制器
当一个请求达到系统时,系统必须能够理解请求中的需求是什么,然后调用适当的业务逻辑进行处理,最后返回相应结果。对于简单的程序,整个过程可以放在视图中,但随着系统的增长,这种处理方式不能很好地满足请求、调用业务逻辑和显示适当视图。那么我们就需要在较大的系统中较好地管理这三者的关系,我们可以划分出视图层与命令和控制层。 视图层与命令和控制层之间的界线通常比较模糊,又是也把这两个层称为表原创 2013-10-09 00:06:17 · 7086 阅读 · 0 评论 -
[php]应用控制器(一)
前端控制器已经能很好地在一个地方集中处理请求并选择适当的Command了,但是Command子类对象自己处理了视图的分配工作。要是能够使用一个类(根据Command处理后返回的状态值)来决定视图并返回到前端控制器,再由前端控制器来调用视图显示,这样的话前端控制器就处于视图层和业务层的中间了,而且也很好地把Command和视图分开了。应用控制器是个好的解决方案。 应用控制器负责映射原创 2013-10-11 00:21:26 · 2580 阅读 · 0 评论 -
[php]架构模式回顾
一直想把以前学过的知识写到博客上,由于太懒,时间久了也就忘得差不多了。这次国庆回家有时间能写点了,也算是给自己复习吧。对于编码写业务,我更喜欢花时间在架构设计上。我在这里面学到了比较多的东西,遂作企业架构模式笔记以加深印象。 PHP是一种为Web开发而设计的语言,在PHP5之后,PHP不断完善对面向对象的支持而且也提供了新的特性,那么这样的话PHP就能像JAVA那样享受设原创 2013-10-03 20:44:11 · 1061 阅读 · 0 评论 -
[php]提供可全局访问的数据
PHP变量作用域:作用域通常用来描述代码结构中对象或者值的可见程度。PHP的变量作用域有三个级别,1)标准级别是指一个HTTP请求从开始到结束的周期。2)PHP内置了对会话变量Session的支持。在一次请求结束后,会话变量会被序列化并存储到文件系统或者数据库中,然后在下一个请求开始时取回。存放在cookie中的会话ID和通过查询字符串传递的会话ID被用于跟踪该会话的拥有者。3)在Java中有一个原创 2013-10-05 20:51:52 · 1252 阅读 · 0 评论 -
[php]选择工厂和更新工厂模式
任何需要和数据库打交道的系统都需要使用Sql,但系统本身是由领域对象和业务规则而不是数据库组成的。这里介绍的选择工厂和更新工厂模式可以为树状的领域结构和表格式的数据库之间搭建一座桥梁。在将领域数据转换为数据库可以理解的格式时,我们需要进行解耦。 之前可以看到标记对象(IdentityObject)模式所带来的好处,它能更加动态地生成查询语句,因为各种查询条件组合的可能性非常多。原创 2013-11-26 19:03:25 · 1305 阅读 · 0 评论