摘要: 这些年来多从事Linux下PHP和C相关的开发,带过很多项目和团队,下面是根据经验整理的PHP编码规范,可以用作给大家的范例和参考,根据需要进行取舍和修改!(可能最新的一些php5的规范不够完整,今后有机会保持更新!)目录1 编写目的2 整体要求3 安全规范3.1 包含文件3.1.1 命名规则3.1.2 存放规则3.2 安全规则3.3 一些针对PHP的规则3.4 其它处理规则3.4.1 对输入参数值进行转义处理3.4.2 操作大HTML文本4 编码规范4.1 命名规范4.1.1 变量命名4.1.2 类4.1.3 方法或函数4.1.4 缩写词4.1.5 数据库表名4.1.6 数据库字段4.2 书 阅读全文
posted @ 2012-02-09 17:59 有梦就能实现 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 通用原则:1、语义化看到名字,就知道意思。2、通用前缀is表示是否、get表示读、set表示写。is后面优先跟形容词,而不是名词,比如是否多语言文字,应使用is_multilingual,而不是is_multilanguage。3、单数与复数参考js的函数命名规则:getElementById、getElementsByTagName、getElementsByName。例如:取我的多个好友的名字,应使用getFriendsName,而不是getFriendNames或者getFriendName取一个用户,是getUser取多个用户,是getUsers4、冗余后缀尽量不使用data、list 阅读全文
posted @ 2012-02-09 17:51 有梦就能实现 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 无规不成方圆,各位初学PHPer,在自编函数、类命名时请规范命名,为以后成为PHP高级程序员养成良好的习惯,打下坚硬的基石!以下内容请参考!类 类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML) class Raster;class ImageSprite 在为类(class)命名前首先要知道类的功能。如果通过类名的提供的线索,不能准确反映类的功能,那么,命名就是失败的。 超过三个词组成的混合名是容易造成系统各个实体间的混淆,尝试使用(CRC Session card)看看该命名.. 阅读全文
posted @ 2012-02-09 17:40 有梦就能实现 阅读(1530) 评论(0) 推荐(0) 编辑
摘要: 什么是单一入口应用程序? 在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序。 news.php 显示新闻列表 news_edit.php 显示新闻编辑页面 这两个页面不但分别实现了两个功能,还成为了应用程序的两个入口。 那什么是入口啊? 打个比方,大家上 WC,都是男生进一个门,女生进一个门。这两个门就是 WC 的两个入口。 呵呵,上面的例子应该很好理解吧。那稍微变换一下,单一入口的概念就很容易理解了。 现在我们是进一个公共 WC,不管男女都是从最外面的入口进入,交了钱以后才分别进两个门。那最外面的入口就是这个 WC 的单一入口。 所以单一入口的应用程序实际上就是... 阅读全文
posted @ 2012-02-09 17:11 有梦就能实现 阅读(825) 评论(0) 推荐(1) 编辑
摘要: 简单来讲,控制器的作用就是接受请求。它使用获取的方法,在这里是通过URI,载入一个功能模块来刷新或者提交一个表述层。控制器将使用$_GET自动全局变量来判断载入哪一个模块。 一个请求的例子,看起来像这样: http://example.com/index.php?module=login 这看起来很简单,但是在实现的过程中却不是。这里是几个控制器能识别的argument部分: module定义了使用哪一个模块,如users模块 class定义了使用哪一个功能类,如你想让用户login还是logout event定义了使用哪一个具体事件 这样一个更复杂的例子可以解释上面的各... 阅读全文
posted @ 2012-02-09 17:03 有梦就能实现 阅读(416) 评论(0) 推荐(0) 编辑
摘要: cakephp的请求示意图: 黑色 = 请求的元素, 灰色 = 可选的元素, 了;蓝色 = 回调方法Ricardo 点击了指向 http://www.example.com/cakes/buy 的链接, 然后他的浏览器对你的服务器发出了一个请求。路由(route)从URL中解释并提取出这次请求的参数: 控制器(controller), 动作(action)以及其他在这次请求中影响到业务逻辑的所有其他参数。使用路由后,请求的URL被映射到一个控制器的动作中(在特定的一个控制器的类的一个方法)。在这个例子,是CakeController类的buy()方法。在控制器的所有动作逻辑执行之前会调用bef 阅读全文
posted @ 2012-02-09 16:58 有梦就能实现 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 控制器(Controller)由一些类组成,根据预先定义的配置选项处理用户请求。一个典型的用户请求如下: http://www.myhost.com/mycompany/Main.php?do=salesReport. php.MVC 控制器由两部分组成:前端控制器和控制器。当请求到来时,前端控制器负责安装应用程序,控制器则根据phpmvc-config.xml的配置属性处理请求。 图6显示了前端控制器的主要任务。 用户请求被Main.php文件接收,这里,将设置一些初始化参数。前端控制器将执行以下任务: 定义应用程序路径:这将指定php.MVC类库以及Web应用程序的路径,如下: $a... 阅读全文
posted @ 2012-02-09 16:51 有梦就能实现 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 表现层的请求处理机制需要支持每个用户多个请求,我们可以以集中式或分散式的方式管理这些请求。 如果以分散的方式进行管理可能会导致如下的一些问题: 每个请求都有一个共同的操作,分散处理可能会导致代码的重复。可能会导致视图导航和视图内容的耦合。分散处..表现层的请求处理机制需要支持每个用户多个请求,我们可以以集中式或分散式的方式管理这些请求。如果以分散的方式进行管理可能会导致如下的一些问题:每个请求都有一个共同的操作,分散处理可能会导致代码的重复。可能会导致视图导航和视图内容的耦合。分散处理可能会带来更高的维护成本。如果我们采用集中的方式进行管理,则可以对安全认证、国际化等操作统一处理,同时也可以在 阅读全文
posted @ 2012-02-09 16:44 有梦就能实现 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 4年以前,当我还在一种叫ASP的东西上工作的时候,我整天为两个问题头疼不已:一是如何将分散的页面控制整合起来。解释型的服务器端脚本,每个页面都有 接收和处理请求的能力。这样以每个页面作为独立的单元来处理请求让人感觉粒度太小,分散又不爽。二是如何减少重复代码。脚本语言里处理重复代码的灵丹妙药 是include。每个页面里都可以include header,footer,session checker,屡试不爽。但有一次我很不幸,我要改一下header的名字…… 后来投靠了java,用了struts,豁然开朗,就像天空中飘下来几个大字:前端控制器。在这几个字的怀里缠绵已久,回望脚本语言林林总总,处 阅读全文
posted @ 2012-02-09 16:41 有梦就能实现 阅读(2635) 评论(2) 推荐(1) 编辑
摘要: 可扩展、高可用、负载均衡网站架构设计方案作者:田逸(sery@163.com) 本作品已刊登在《IT实验室周报》第6期第6版基本需求: 1、 高可用性:将停止服务时间降低到最低甚至是不间断服务2、 可扩展性:随着访问的增加,系统具备良好的伸缩能力3、 可视性:系统、服务的状态处于一个实时的监控之下4、 高性能高可靠性:经过优化的体系结构及合理的备份策略5、 安全性:结构上的安全及主机的安全策略基本思路1、对于访问频繁,用户量大的对象(bbs,blog)采用某种合理的方式负载到多个服务器上。把数据库独立出来,准备2套mysql数据库,以实现主从复制,即减轻负载,又提高了可靠性。更近一步,使用my 阅读全文
posted @ 2012-02-09 14:49 有梦就能实现 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 关键字WEB、可扩展、架构体系结构、开发、测试、数据、优化、负载均衡、监控、规划第1章 绪论WEB站点包含的是页面数据,而WEB应用程序则是由具备分离交付机制的数据组成的。 一个WEB应用至少包括硬件和软件。 好的应用体系结构的关键在于开始的规划。第2章 WEB应用程序体系结构系统架构分层,一如OSI的七层,各司其职,确保每层都能很好的完成自己的职责。 每个层的功能都只建立在同层或较低层所提供的功能之上。 层内通常都是自我完备,自制的。层与层的交互通过接口实现, 但是会产生一些问题,层与层之间的交互会增加额外的消耗,并且分层会给调试带来困难。作者认为WEB应用分为展现层(CSS),标记层(ht 阅读全文
posted @ 2012-02-09 14:40 有梦就能实现 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sery.blog.51cto.com/10037/252992作者:田逸(sery@163.com)第一章 项目描述高考中国主要包含“高考志愿通”志愿填报系统的研究开发、产品运营;高考中国网站(www.gaokaochina.com)的开发、维护与运营。“高考志愿通”是经过数十位全国高考志愿填报指导专家、计算机网络专家、数学模型专家和数据统计专家历时多年精心打造。成为中国第一套高考志愿填报综合分析系统,信息最全最新的高考志愿填报综合分析系统,分析最科学、最精确的填报指导系统。 阅读全文
posted @ 2012-02-09 14:25 有梦就能实现 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要 求了。此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架 构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力 的系统,也就是说,我们必须进行可扩展设计。可扩展设计是一个非常复杂的系统工程,所 涉及的各个方面非常的广泛,技术也较为复杂,可能还会带来很多其他方面的问题。但不管 我们如何设计,不管遇到哪些问题,有些原则我们还是必须确保的。本章就将可扩展设计过 程中需要确保的原则做一个简单的介绍。12.1 什么是可扩展性在讨论可扩展性之前,可能很多朋有会问:常听人说起某某 阅读全文
posted @ 2012-02-09 14:19 有梦就能实现 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 如果你了解了js面向对象,HTTP协议,那么就自己动手写一个AJAX框架就可以了。小技术,大家不要笑啊!源码:(注释就不写了,应该不难看懂的)var ajax = { _params: null, _callback: null, _xhr: null,_createXHR: function () { if (window.ActiveXObject) { _xhr = new ActiveXObject("Microsoft.XMLHTTP"); //IE } else if (window.XMLHttpRequest) { _xhr = new XMLHttpReq 阅读全文
posted @ 2012-02-09 13:40 有梦就能实现 阅读(345) 评论(0) 推荐(1) 编辑
摘要: 维基百科(Wikipedia)是一个基于Wiki技术的全球性多语言百科全书协作计划,同时也是一部在网际网路上呈现的网路百科全书,其目标及宗旨是为全人类提供自由的百科全书──用他们所选择的语言来书写而成的,是一个动态的、可自由和的全球知识体。wikipedia在IT架构方面的经验,对于我们构建网站极有参考价值,因为wikipedia提供的这些信息非常详细和确凿。下面是我学习Wikipedia架构后的一些总结。1、Wikipedia的相关数据峰值每秒钟3万个HTTP 请求每秒钟 3Gbit 流量, 近乎375MB350 台 PC 服务器Wikipedia的数据来源来自Wikimedia archi 阅读全文
posted @ 2012-02-09 13:27 有梦就能实现 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 这几天一直在关注和学习一些大型网站的架构,希望有一天自己也能设计一个高并发、高容错的系统并能应用在实践上。今天在网上找架构相关的资料时,看到一个被和谐的视频网站YouTube的架构分析,看了以后觉得自己又向架构走近了一步,于是赶快拿出来与大家一起分享。YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人在维护站点和确保伸缩性。这点和PlentyOfFish类似,少数人维护庞大系统。是什么原因呢?放心绝对不是靠人品,也不是靠寂寞,下面就来看看YouTube的整体技术架构吧。平台123456<strong>ApachePythonLinux(SuSe)MySQLpsyco,一 阅读全文
posted @ 2012-02-09 13:25 有梦就能实现 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 这是PHP应用程序框架设计系列教程的第二部分。在第一部分,我们已经介绍框架的基础类结构,并展示了项目的大体。这一部分,我们将在程序中添加会话处理功能,并演示管理用户的各种方法。 会话 HTTP是一种无状态的协议,正因为如此,它没有包含任何与服务器连 接的相关信息。这就意味着,HTTP是孤立的,web服务器并不知道用户与你web程序相连接的任何信息,并且服务器会将每个页面请求视为一个新的连接。 Apache/PHP通过提供对会话的支持来避开这一限制。从概念上来说,会话是相当简单的。在一个用户第一次连接到服务器的时候,他被分配一个唯一的 ID。web服务器在一个文件中维护会话信息(译注:即把... 阅读全文
posted @ 2012-02-09 12:15 有梦就能实现 阅读(651) 评论(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) 编辑