`
linvar
  • 浏览: 254523 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

PHP开发的模式

    博客分类:
  • php
阅读更多
近期在准备使用PHP进行一个项目的开发,由于没有使用过PHP开发项目,所以正在思考应该以怎样的模式进行PHP项目的开发.

PHP框架使用轻量级的CI,数据库应该是mysql,可以考虑pgsql,开发工具eclipse+pdt,版本控制subversion,运行环境应该是linux + apache + php5.3,虽然个人更想尝试linux + nginx + php-cgi.
------
php-cgi 性能不行,推荐使用php-fpm(但是我编译成功后并不能运行php-fpm)

项目的顺利完成需要什么条件呢?
整个项目应该怎样管理才能达到高效,可维护,可控制?
1.前期需求分析
市场调研,客户沟通,引导客户
其实这挺笼统,具体到实施应该有许多细节需要考虑.

2.系统设计
印象里好像就是设计数据库表结构,
考虑系统的灵活性,可扩展性,适应多变的客户需求
系统不可能一步到位分析得很完美,
需要经历多次推倒重来的阵痛.

3.代码设计
团队协作需要代码规范,具体到变量名,方法名,返回值约定,各层之间的接口约定

Module类主要负责数据库的增删改查,为Controller提供数据,返回的数据以数组封装
Module类还可以根据业务逻辑验证客户端传递的数据,返回方式可以有两种:
a.以true/false代表验证结果,再加上提示信息
b.返回错误代码,让客户端(js)根据错误代码显示提示信息

Controller主要是控制业务逻辑,可能存在复杂的业务逻辑,可以使用额外的handler,helper帮助实现业务逻辑, Controller的方法应该是比较清晰的,不应该包含太多复杂的业务逻辑实现,这些交给helper,handler去完成.事务控制也应该在这里控制.

View是展示Controller的结果,尽量不使用模板引擎吧,里面的逻辑无非就是if,foreach.
view的结果可能是html片段(ajax请求),也可能是整个html页面.对于html片段比较简单,直接返回结果. 而如果是返回整个页面, 通过(layout)分离html的各个部分应该有不错的灵活性.
因为各个页面的样式都差不多. 而针对当前页面的css,js也可以在这里动态加载.
css, js应该与html分离.

4.数据缓存
数据库操作在PHP算是比较耗资源的了,因此缓存很重要,
由于PHP没有常驻内存,缓存只能靠文件方式,或者使用APC(alternate PHP Cache)或使用外部存储如memcached.
文件方式效率比较低,不推荐,PHP的session就是通过文件方式来存储信息的,因此可以不使用内部的Session机制,使用外部缓存实现session机制(数据库+memcached).

APC is a free, open, and robust framework for caching and optimizing PHP intermediate code.把PHP源文件的中间代码缓存起来,下次再请求时不再编译,直接使用上次编译结果执行.缓存方式是内存存储
APC也可以缓存只读为主的数据,比如系统的设置等,写太频繁的数据不适宜用APC,而应该使用memcached

缓存的另一种方式是页面的静态化,把结果用html格式缓存起来,请求时直接读取html文件.

5.代码测试
不太清楚PHP的相关测试方法,直接在页面测试结果吧,性能测试也不太清楚

6.维护
维护少不了文档,所以编码时必须有清晰明确的注释.
还少不了另外的系统说明文档

7.重构
适时重构




0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics