约定大约规范…… 以下为笔记,虽然有许多约定我并不认可。

文件格式

文件标记

1
2
3
4
5
6
7
8
9
// 完整PHP标签
<?php
echo 'Hello world!';
?>

// 短标签
<?
echo 'Hello world!';
?>

使用段标签格式容易和XML混淆,并且不是所有PHP版本和服务器都默认支持或打开段标签选项;所以,所有PHP文件,其代码标记均使用完整PHP标签,不建议使用短标签。

对于只含有PHP代码的文件,将在文件结尾处忽略 ?>。这是为了防止多余空格或者其他字符影响到代码。

文件和目录命名

程序文件名和目录名均采用有意义的英文命名,不适用拼音或无意义的字幕,只允许出现字母、数字、下划线等字符,同事必须以 .php 结尾(模板文件除外)。多个词间使用大驼峰法命名。

1
2
3
4
5
6
7
// 类统一采用
DemoTest.class.php
// 接口统一采用
DemoTest.interface.php

// 其他按照各自的方式
demoTest.{style}.php

文件目录结构

  • app —— 独立的应用
  • class —— 类文件目录
  • conf —— 配置文件目录
  • data —— 数据文件目录
  • doc —— 程序相关文档目录
  • images —— 图片存放目录
  • css —— CSS文件
  • js —— JavaScript文件目录
  • lib —— 公用类库目录
  • template —— 模板文件目录
  • temp —— 临时文件目录
  • upload —— 上唇文件目录
  • manage —— 后台管理文件目录

命名规范

PHP中的变量用一个美元符号后面跟变量名表示。变量名区分大小写。一个有效变量名由字幕或者下划线开头,后面跟任意数量的字幕、数字、下划线。不应该在变量中使用中文等非ASCII字符。

变量命名

程序整体,包括普通变量、函数名、类中属性在内,以小驼峰法命名

1
2
3
4
5
<?php
function displayName($name) {
echo $name;
}
?>

PHP全局变量键值两边都有 _,中间使用小驼峰命名

1
$_GLOBAL['_beginTime_'];

类及接口命名

  • 大驼峰命名
  • 类名和类文件保持一致
  • 程序中所有类名唯一
  • 抽象类应以Abstract开头
  • 接口命名和类相同的命名规则,但在其命名前加i字符,表示接口
1
2
3
MyClass.class.php
Datebase.class.php
iDatabase.interface.php

数据库命名

数据表命名

  • 表名均使用小写字母
  • 表名使用同一的前缀,且前缀不能为空(模块化,规避保留字)
  • 多个单词组成的表名,使用 _ 间隔

表字段命名

  • 全部使用小写字母
  • 多个单次不用下划线进行分割
  • 如果有必要,给常用字段加上表明首字母作为前缀

其他

  • 存储过程以 proc_ 开头
  • 触发器以 tri_ 开头
  • Event 调度以 event_ 开头
  • 视图以 view_ 开头

其他习惯

多使用PHP中已经存在的常量,而不要自己定义,例如:

1
2
3
4
5
6
<?php
// 换行
// PHP中,PHP_EOL 是一个预定义常量,表示一行结束,随着所使用系统的不同,使用PHP_EOL会让代码更具有可移植性
echo $msg."\r\n";
ecoh $msg.PHP_EOL;
?>

在 echo 中使用逗号做字符串连接符,比使用点号代码更美观。

参考书籍: 《PHP核心技术与最佳实践》