##包含文件
提取出来具有通用函数的包含文件,文件后缀以`.inc`来命名,表明这是一个包含文件。
如果有多个`.inc`文件需要包含多页面,请把所有`.inc`文件封装在一个文件里面,具体到页面只需要包换一个`.inc`文件就可以了。
如:`xxx_session.inc`、`xxx_comm.inc`、`xxx_setting.inc`、`myssql_db.inc`。
把以上文件以以下方式,封装在`xxx.basic.inc`文件里面:
~~~``
require_once('xxx_session.inc');
require_once('xxx_comm.inc');
require_once('xxx_setting.inc');
require_once('mysql_db.inc');
~~~
## PHP和HTML代码的分离问题
对性能要求不是很高的项目和应用,我们建议不采用 PHP 和 HTML 代码直接混排的方式书写代码,而采用 PHP 和 HTML 代码分离的方式,即采用模版的方式处理,这样一方面对程序逻辑结构更加清晰有利,也有助于开发过程中人员的分工安排,同时还对日后项目的页面升级该版提供更多便利。
**对于一些特殊情况,比如对性能要求很高的应用,可以不采用模版方式。**
## 类的构造函数
如果要在类里面编写构造函数,必须遵循以下规则:
a.不能在构造函数中有太多实际操作,顶多用来初始化一些值和变量;
b.不能在构造函数中因为使用操作而返回false或者错误,因为在声明和实例化一个对象的时候,是不能返回错误的;
##错误返回检测规则
检查所有的系统调用的错误信息,除非你要忽略错误。
为每条系统错误消息定义好系统错误文本,并记录错误LOG。
##引用的使用
引用在程序中使用比较多,为了公用同一个内存,而不需要另外进行复制,XXX环境下的引用使用时,需要注意下面的情况;
在对函数的输入参数中使用引用时,不能在调用的时候在输入参数前加 `&` 来引用,而直接使用该变量即可,同时必须在函数定义的时候说明输入参数来自引用,比如下面的代码:
~~~
$a = 1;
function ab( &$var ) {
$var ++;
return $var;
}
$b = ab($a); // 注意,此处不能使用 $b = ab(&$a)的方式;
echo $b."\n";
echo $a."\n";
~~~
此时 `$a` 和 ``$b`` 都是 2;
XXX环境下对引用的特殊要求源自 php.ini 文件里面的`allow_call_time_pass_reference` 项设置,对外公开的版本是 `On`,这样就可以支持`&`直接加到调用函数时变量前面进行引用,但是这一方法遭到抗议,并可能在将来版本的 PHP/Zend 里不再支持。受到鼓励的指定哪些参数按引用传递的方法是在函数声明里。你被鼓励尝试关闭这一选项(使用`off`,XXX的所有运行环境下都是`off`)并确认你的脚本仍能正常工作,以保证在将来版本的语言里它们仍能工作。
##PHP项目开发中的程序逻辑结构
对于 PHP 项目开发,尽量采用 `OOP` 的思想开发,尤其在 PHP5 以后,对于面向对象的开发功能大大提高。
在 PHP 项目中,我们建议将独立的功能模块尽量写成函数调用,对应一整块业务逻辑,我们建议封装成类,既可以提高代码可读性,也可以提高代码重用性。比如,我们通常将对数据库的接口封装成数据库类,有利于平台的移植。
重复的代码要做成公共的库。(除了我们在 `plug-in` 产品上遇到的情况,该产品系列有多个相类似的产品,为了尽可能地减少安装包尺寸,不适合将这些产品共用的所有函数做成公共的库)。