收藏 分销(赏)

PHP语言标准规范文档.doc

上传人:天**** 文档编号:2978046 上传时间:2024-06-12 格式:DOC 页数:17 大小:33.04KB 下载积分:8 金币
下载 相关 举报
PHP语言标准规范文档.doc_第1页
第1页 / 共17页
PHP语言标准规范文档.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
PHP语言编写规范 第1章 命名规范 1.1变量 1.1.1全局变量 全局变量使用$g_开头,如$g_data_list。 1.1.2 普通变量 普通变量使用小写字母命名,单词之间使用下划线分隔。 变量名字应当使用名词或者形容词+名词方式。如$value,$new_value。 1.1.3 暂时变量 不要将在循环中频繁使用暂时变量如$i,$j等用于其他用途。 1.2 函数 函数采用小写字母命名,单词之间使用下划线分隔。 函数命名建议使用动词+名词方式,如get_user_img。 完毕一组功能函数放到一种文献中,存储函数文献采用function_name.func.php命名。 1.3 类 类使用英文大小写来分隔单词,涉及首个单词,所有单词首字母大写,如PageManager; 在类中,办法放到属性定义前边、公用办法放到专用办法前边; 普通状况下,一种类相应到一种文献; 当某些类关系紧密时,可以存储在一种文献中; 存储类文献采用ClassName.class.php方式命名。 1.4 办法 办法使用英文大小写来分隔单词,除首个单词外,其她单词首字母大写,如getCurrentPage(); 不要采用不惯用缩写,如where2go(); 使用惯用缩写时,只大写首字母,如getHtml()。 第2章 版式规则 2.1 语义分隔 各个函数、办法之间应当采用空行间隔; 同一种函数中联系紧密语句之间可以不换行,其她状况需要换行。 2.2 空格规则 2.2.1 逻辑运算符先后必要加空格 对的 $a == $b; 错误 $a==$b; $a ==$b; 备注 - 对的 $a++;$a–; 错误 $a ++;$a –; 备注 加一减一运算符不能加空格。 2.2.2 各种参数分隔时必要加空格 对的 $g_pro ,$g_user ,g_show; get_db_info($host,$user,$passwd); 错误 $g_pro,$g_user,$g_show; get_db_info($host,$user,$passwd); 备注 - 2.2.3 语法核心字后必要加空格 例如:If,for ,while,switch ….. 对的 for ($i = 0;$i < 10;$i++) 错误 for($i = 0;$i < 10;$i++ ) 备注 - 2.3 字符串和变量连接规则 字符串与变量连接使用’.'号时,必要在’.'先后加空格,使用”号时,必要在变量先后加”{}”。 对的 $my_name = ’file_’ . $var1; $my_name = ”file_{$var1}”; 错误 $my_name = ”file_’.$var1; $my_name = ”file_$var1″; 备注 - 2.4 圆括号规则 函数名后括号不需要加空格、语法核心字后括号必要加空格。 对的 for ($i = 0;$i < 10;$i++) strlen($my_name); 错误 for($i = 0;$i < 10;$i++ ) strlen ($my_name); 备注 - 2.5 花括号规则 花括号必要为上下相应。 对的 if ($a) { $b = $a; } 错误 if ($a){ $b = $a; } 备注 - 2.6 数组定义规则 数组定义和使用时中key值先后必要加单引号。 PHP 代码: 下载:php_array.php <?php //对的 array( 'name' => '', 'gender' => 'php' ); //错误 array( name => '', gender => 'php' ); ?> 2.7 SQL规则 在PHP中嵌入SQL语句核心字所有采用大写; 表名和字段名要用反引号(`)引起来以防止由于字段名中包括空格而浮现错误; 数据值两边用单引号”涉及,并且应保证数据值中单引号已经转义以防止SQL注入。 对的 $sql = ”SELECT `user`.`name` FROM `user` WHERE `id` = ’$id’ LIMIT 1″; 错误 $sql = ”select name.user from name where id = $id ”; 备注 - 第3章 注释规则 3.1 普通规则 不写不必要注释;只有当代码不能较好地阐明逻辑时,才用注释补充; 把注释当作程序一某些,在编写/维护代码时同步编写/维护注释; 注释完全采用PHPDocumentor规范,以以便用其生成API级文档。 3.2 详细规则 请参见PHPDocumentor手册。下边给出各个某些注释示范。 3.2.1 版权信息 注释名称 版权信息 注释示范 // // +—————————————————-+ // | phpDocumentor | // +—————————————————-+ // | Copyright (c) - Joshua Eichorn | // | Email | // | Web | // +—————————————————-+ // | This source file is subject to PHP License | // +—————————————————-+ // 备注 使用//来标示版权信息,以免和PHPDocumentorpage-level DocBlock发生冲突 3.2.2文献头注释示例 注释名称 文献头注释 注释示范 下载:php_doc.php <?php * All abstract representations of inline tags are in this file * @package phpDocumentor * @subpackage InlineTags * @since separate file since version 1.2 * @version $Id $ */ ?> 备注 1 文献头注释需要指明所属包和子包 2 在@version中加上$ID,以以便使用CVS管理文献 3.2.3 类注释示例 注释名称 类注释 注释示范 下载:php_class.php <?php /** * Use this element to represent an {@}inline tag} like {@}link} * @see parserStringWithInlineTags * @package phpDocumentor * @subpackage InlineTags * @author Greg Beaver <></> * @since 1.0rc1 * @version $Revision:1.21.2.6 $ * @tutorial inlinetags.pkg */ ?> 备注 - 3.2.4 类属性注释示例 注释名称 类属性注释 注释示范 下载:php.php <?php /** var $type = 'inlinetag'; * Element type * * Type is used by many functions to skip the hassle of * * <code> * if get_class($blah) == 'parserBlah' * </code> * always "inlinetag" * @var string */ ?> 备注 - 3.2.5 函数/类办法注释示例 注释名称 函数/类办法注释 注释示范 下载:php.php <?php /** function getString() ''; * @return string always '' * calculate the short description of a DocBlock * @see parserStringWithInlineTags::getString() * @see parserStringWithInlineTags::trimmedStrlen() */ { return } ?> 此条目刊登在 理论 分类目录。将固定链接加入收藏夹。 用单引号代替双引号来包括字符串,这样做会更快某些。由于PHP会在双引号包围字符串中搜寻变量,单引号则不会,注意:只有echo能这样做,它是一种可以把各种字符串当作参数“函数”(译注:PHP手册中说echo是语言构造,不是真正函数,故把函数加上了双引号)。 1、如果能将类办法定义成static,就尽量定义成static,它速度会提高将近4倍。 2、$row[’id’] 速度是$row[id]7倍。 3、echo 比 print 快,并且使用echo多重参数(译注:指用逗号而不是句点)代替字符串连接,例如echo $str1,$str2。 4、在执行for循环之前拟定最大循环数,不要每循环一次都计算最大值,最佳运用foreach代替。 5、注销那些不用变量特别是大数组,以便释放内存。 6、尽量避免使用__get,__set,__autoload。 7、require_once()代价昂贵。 8、include文献时尽量使用绝对途径,由于它避免了PHP去include_path里查找文献速度,解析操作系统途径所需时间会更少。 9、如果你想懂得脚本开始执行(译注:即服务器端收到客户端祈求)时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10、函数代替正则表达式完毕相似功能。 11、str_replace函数比preg_replace函数快,但strtr函数效率是str_replace函数四倍。 12、如果一种字符串替代函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替代代码,使得每次传递参数是一种字符,而不是只写一行代码接受数组作为查询和替代参数。 13、使用选取分支语句(译注:即switch case)好于使用各种if,else if语句。 14、用@屏蔽错误消息做法非常低效,极其低效。 15、打开apachemod_deflate模块,可以提高网页浏览速度。 16、数据库连接当使用完毕时应关掉,不要用长连接。 17、错误消息代价昂贵。 18、在办法中递增局部变量,速度是最快。几乎与在函数中调用局部变量速度相称。 19、递增一种全局变量要比递增一种局部变量慢2倍。 20、递增一种对象属性(如:$this->prop++)要比递增一种局部变量慢3倍。 21、递增一种未预定义局部变量要比递增一种预定义局部变量慢9至10倍。 22、仅定义一种局部变量而没在函数中调用它,同样会减慢速度(其限度相称于递增一种局部变量)。PHP大概会检查看与否存在全局变量。 23、办法调用看来与类中定义办法数量无关,由于我(在测试办法之前和之后都)添加了10个办法,但性能上没有变化。 24、派生类中办法运营起来要快于在基类中定义同样办法。 25、调用带有一种参数空函数,其耗费时间相称于执行7至8次局部变量递增操作。类似办法调用所耗费时间接近于15次局部变量递增操作。 26、Apache解析一种PHP脚本时间要比解析一种静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。 27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制普通可以提高25%至100%性能,以免除编译开销。 28、尽量做缓存,可使用memcached。memcached是一款高性能内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)缓存很有用,使得脚本不必为每个祈求做重新编译。 29、当操作字符串并需要检查其长度与否满足某种规定期,你想固然地会使用strlen()函数。此函数执行起来相称快,由于它不做任何计算,只返回在zval 构造(C内置数据构造,用于存储PHP变量)中存储已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,由于函数调用会通过诸多环节,如字母小写化(译注:指函数名小写化,PHP不区别函数名大小写)、哈希查找,会跟随被调用函数一起执行。在某些状况下,你可以使用isset() 技巧加速执行你代码。 (举例如下) if (strlen($foo) < 5) { echo “Foo is too short”$$ } (与下面技巧做比较) if (!isset($foo{5})) { echo “Foo is too short”$$ } 调用isset()碰巧比strlen()快,由于与后者不同是,isset()作为一种语言构造,意味着它执行不需要函数查找和字母小写化。也就是说,事实上在检查字符串长度顶层代码中你没有花太多开销。 34、当执行变量$i递增或递减时,$i++会比++$i慢某些。这种差别是PHP特有,并不合用于其她语言,因此请不要修改你C或Java代码并指望它们能及时变快,没用。++$i更快是由于它只需要3条指令(opcodes),$i++则需要4条指令。后置递增事实上会产生一种暂时变量,这个暂时变量随后被递增。而前置递增直接在原值上递增。这是最优化解决一种,正如ZendPHP优化器所作那样。紧记这个优化解决不失为一种好主意,由于并不是所有指令优化器都会做同样优化解决,并且存在大量没有装配指令优化器互联网服务提供商(ISPs)和服务器。 35、并不是事必面向对象(OOP),面向对象往往开销很大,每个办法和对象调用都会消耗诸多内存。 36、并非要用类实现所有数据构造,数组也很有用。 37、不要把办法细分得过多,仔细想想你真正打算重用是哪些代码? 38、当你需要时,你总能把代码分解成办法。 39、尽量采用大量PHP内置函数。 40、如果在代码中存在大量耗时函数,你可以考虑用C扩展方式实现它们。 41、评估检查(profile)你代码。检查器会告诉你,代码哪些某些消耗了多少时间。Xdebug调试器包括了检查程序,评估检查总体上可以显示出代码瓶颈。 42、mod_zip可作为Apache模块,用来即时压缩你数据,并可让数据传播量减少80%。 43、在可以用file_get_contents代替file、fopen、feof、fgets等系列办法状况下,尽量用file_get_contents,由于她效率高得多!但是要注意file_get_contents在打开一种URL文献时候PHP版本问题; 44、尽量少进行文献操作,虽然PHP文献操作效率也不低; 45、优化Select SQL语句,在也许状况下尽量少进行Insert、Update操作(在update上,我被恶批过); 46、尽量使用PHP内部函数(但是我却为了找个PHP里面不存在函数,挥霍了本可以写出一种自定义函数时间,经验问题啊!); 47、循环内部不要声明变量,特别是大变量:对象(这好像不只是PHP里面要注意问题吧?); 48、多维数组尽量不要循环嵌套赋值; 49、在可以用PHP内部字符串操作函数状况下,不要用正则表达式; 50、foreach效率更高,尽量用foreach代替while和for循环; 51、用单引号代替双引号引用字符串; 52、“用i+=1代替i=i+1。符合c/c++习惯,效率还高”; 53、对global变量,应当用完就unset()掉;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服