您的位置:首页 > 编程语言 > PHP开发

thinkphp的命名规范

2014-02-07 17:20 211 查看
使用ThinkPHP开发的过程中应该尽量遵循下列命名规范:
?类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如DbMysql.class.php;
?确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);
?类名和文件名一致(包括上面说的大小写一致),例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范;
?函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求);
?函数的命名使用小写字母和下划线的方式,例如 get_client_ip;
?方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 getUserName,_parseType,通常下划线开头的方法属于私有方法;
?属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 tableName、_instance,通常下划线开头的属性属于私有属性;
?以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload;
?常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY;
?配置参数以大写字母和下划线命名,例如HTML_CACHE_ON;
?语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_;
?对变量的命名没有强制的规范,可以根据团队规范来进行;
?ThinkPHP的模板文件默认是以.html 为后缀(可以通过配置修改);
?数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段,类似 _username 这样的数据表字段可能会被过滤。
特例:在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。例如,ADSL方法等等,他们有着特殊的含义,后面会有所了解。
另外有一点非常关键,ThinkPHP默认全部使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理),否则可能导致很多意想不到的问题。
什么是BOM头
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。
  PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
=================================================================================================
window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符
但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF0xBB 0xBF这3个字符。
这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了
把以下代码复制到一个PHP文件里面,运行该PHP文件,就可以批量清除该文件相同目录下所有文件的头部BOM.
<?php
if (isset($_GET['dir'])){ //设置文件目录
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)){
while (($file = readdir($dh)) !==false) {
if ($file != '.' &&$file != '..'){
if (!is_dir($basedir."/".$file)) {
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")."<br>";
}else{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239&& ord($charset[2]) == 187&& ord($charset[3]) == 191){
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return ("<fontcolor=red>BOM found, automaticallyremoved.</font>");
}else {
return ("<fontcolor=red>BOMfound.</font>");
}
}else return ("BOM Not Found.");
}
function rewrite ($filename, $data){
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
指定目录或文件清除BOM
<?phpif(isset($_GET['dir']) &&!empty($_GET['dir'])){ //设置文件目录 $basedir=$_GET['dir']; }else{ $basedir ='.'; } if(empty($_GET['filename'])){ //设置文件 $auto = 1; checkdir($basedir); }else{ $file = $_GET['filename'];echo"filename:$basedir/$file".checkBOM("$basedir/$file")."<br>";}functioncheckdir($basedir){ if($dh = opendir($basedir)){ while(($file = readdir($dh)) !==false) { if($file !='.'&&$file !='..'){ if(!is_dir($basedir."/".$file)) { echo"filename:$basedir/$file".checkBOM("$basedir/$file")."<br>"; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } functioncheckBOM ($filename) { global$auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if(ord($charset[1]) == 239&& ord($charset[2]) == 187&& ord($charset[3]) == 191){ if($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return("<fontcolor=red>BOM found, automaticallyremoved.</font>"); }else{ return("<fontcolor=red>BOMfound.</font>"); } }else return("BOM Not Found."); } functionrewrite ($filename, $data){ $filenum = fopen($filename,"w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: