摘要: 这是PHP应用程序框架设计系列教程的第二部分。在第一部分,我们已经介绍框架的基础类结构,并展示了项目的大体。这一部分,我们将在程序中添加会话处理功能,并演示管理用户的各种方法。 会话 HTTP是一种无状态的协议,正因为如此,它没有包含任何与服务器连 接的相关信息。这就意味着,HTTP是孤立的,web服务器并不知道用户与你web程序相连接的任何信息,并且服务器会将每个页面请求视为一个新的连接。 Apache/PHP通过提供对会话的支持来避开这一限制。从概念上来说,会话是相当简单的。在一个用户第一次连接到服务器的时候,他被分配一个唯一的 ID。web服务器在一个文件中维护会话信息(译注:即把... 阅读全文
posted @ 2012-02-09 12:15 有梦就能实现 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 动机一个设计良好的应用程序应该充分考虑到开发和维护阶段需求的频繁变化,通常情况下,添加一个新的功能需要做出很多修改,我们应该使对已有代码的修改最小化,因为他们已经经过了测试。对现有代码做出修改将会以一种不可预料的方式影响它们的已有功能。开放-关闭原则 (以下简称开闭原则)开-闭原则:一个软件实体应该对扩展开发,对修改关闭。开闭原则是说我们应该努力设计不需要修改的模块。在扩展系统的行为时,我们只需要添加新的代码,而不需要修改已有的代码。一般可以通过添加新的子类和重写父类的方法来实现。满足开闭原则的模块符合下面两个标准:对扩展开放 ------- 模块的行为可以被扩展从而满足新的需求。对修改关闭 阅读全文
posted @ 2012-02-09 12:03 有梦就能实现 阅读(611) 评论(0) 推荐(0) 编辑
摘要: 动机在本文中职责是指引起变化的原因。该原则表明,如果你有多个原因去改变一个类,那么应该把这些引起变化的原因分离开,把这个类分成多个类,每个类只 负责处理一种改变。当你做出某种改变时,只需要修改负责处理该改变的类。当我们去改变一个具有多个职责的类时可能会影响该类的其他功能。单一职责原则一个类应该只受一种变化的影响。单一职责原则简单而直观,但是在实际实现中可能是很困难的。实例假设我们需要一个对象保存email信息,在下面的例子中我们将使用IEMAIL接口。初看起来,一切都很好。但是仔细分析我们会发现我们的 IEMAIL接口和Email类具有两个职责(两种引起改变的原因)。一个是在一些类似pop3和 阅读全文
posted @ 2012-02-09 12:01 有梦就能实现 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则(Single Responsibility Principle SRP)There should never be more than one reason for a class to change.什么意思呢? 所谓单一职责原则就是一个类只负责一个职责,只有一个引起变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化会削弱或抑制这个类完成其他职责的能力,这个耦合会脆弱的设计。软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离;如果能够想到多于一个动机去改变一个类,那么这个类就具有多于一个职责,就应该考虑类的分离。以调制解调器为例如下图: 阅读全文
posted @ 2012-02-09 12:00 有梦就能实现 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1、HTML静态化其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说 阅读全文
posted @ 2012-02-09 11:56 有梦就能实现 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 作为一个Web的前端攻城师,在制作页面效果时肯定有碰到下面这种现象:当一个HTML页面中含有较少的内容时,Web页面的“footer”部分 随着飘上来,处在页面的半腰中间,给视觉效果带来极大的影响,让你的页面看上去很不好看,特别是现在宽屏越来越多,这种现象更是常见。那么如何将Web页 面的“footer”部分永远固定在页面的底部呢?注意了这里所说的是页脚footer永远固定在页面的底部,而不是永远固定在显示器屏幕的底部,换句话说,就是当内容只有一点点时,Web页面显示在浏览器底部,当内容高度超过浏览器高度时,Web页面的footer部分在页面的底部,总而言之Web页面的footer部分永远在页 阅读全文
posted @ 2012-02-09 10:40 有梦就能实现 阅读(720) 评论(1) 推荐(0) 编辑
摘要: 从本节起开始正式讲述mvc的开发,理论和代码一起上。下面图片是目录结构了解zend framework 的朋友肯定非常熟悉这样的目录结构其中application 文件夹 是应用层的核心代码Library文件夹 是mvc框架底层代码(咱们课程重点就是讲述这个文件夹里的文件)www是网站的根目录,明显看到 网站跟目录和 application以及library 没有包含在www目录里,这样也可以起到一定的安全作用,www目录中放置模板,图片等一些代码本节主要讲述和网站入口相关的三个文件 图中中已经用红色表示出首先看看.htaccess文件代码12345678910111213SetEnv APP 阅读全文
posted @ 2012-02-08 23:22 有梦就能实现 阅读(1325) 评论(0) 推荐(0) 编辑
摘要: 说到PHP单入口模式,很快想到关于PHP的一些框架,zend,thinkphp,qeephp,还有cakephp 等,它们都采用了统一的入口,可以根据不同的需要,分前台入口后台入口或者其他操作权限入口,这样的设计模式优点很明显,比如。权限控制,url重写,结 合MVC清晰地目录结构。这些都是单入口模式所带来的便利,当然这样的也会带来执行效率的疑问。 由单入口模式,我顺便提下单件模式,结合OO特性。 <?phpclass A{ private static $tag = null; private function __construct(){} static function getOb 阅读全文
posted @ 2012-02-08 23:17 有梦就能实现 阅读(3720) 评论(0) 推荐(0) 编辑
摘要: 前言网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你 就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了,否则,如果你想了解兼容性方面的东西的话,你还是应该继续往下看看。我们先开始看看,什么叫函数表达式,然后再说一下现代调试器如何处理这些表达式,如果你已经对这方面很熟悉的话,请直接跳过此小节。函数表达式和函数声明在E 阅读全文
posted @ 2012-02-08 17:56 有梦就能实现 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 一、浏览器的发展与CSS网页浏览器主要通过HTTP协议连接网页服务器而取得网页,HTTP容许网页浏览器送交资料到网页服务器并且获取网页。目前最常用的 HTTP是HTTP/1.1,这个协议在RFC2616中被完整定义。HTTP/1.1有其一套InternetExplorer并不完全支援的 标准,然而许多其他当代的网页浏览器则完全支援这些标准。网页的位置以URL(统一资源定位符)指示,此乃网页的地址;以http:开首的便是通过 HTTP协议登陆。很多浏览器同时支援其他类型的URL及协议,例如ftp:是FTP(档案传送协议)、gopher:是Gopher及https:是 HTTPS(以SSL加密的H 阅读全文
posted @ 2012-02-08 17:04 有梦就能实现 阅读(581) 评论(0) 推荐(0) 编辑