PHP网页编程之编写PHP代码总结
在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。1- 编写模块化代码
优秀的PHP代码应当是模块化代码。PHP的面向对象的编程功效是一些出格壮大的工 具,可以把你的使用法式分化成函数或办法。你应当尽量多的从你的使用法式的办事器端分隔前真个HTML/CSS/JavaScript代码。你也能够在 任何PHP框架上遵守MVC(模子-视图-掌握器)形式。
2- 代码编写标准
优秀的PHP代码应当有一套完全的代码编写标准。经由过程对变量和函数的定名,一致的办法会见数据库和对毛病的处置,和一样的代码缩进体例等来到达编程标准,如许可使你的代码更具可读性。
3- 编写可移植代码
优秀的PHP代码应当是可移植的。你可使用php的现有功效,如魔术引号和短标签。试着懂得你的需求,然后经由过程顺应PHP特征来编写代码让代码自力、可移植。
4- 编写平安代码
良 好的PHP代码应当是平安的。PHP5供应了精彩的功能和天真性。然而平安成绩完整在于开辟人员。关于一个专业的PHP开辟人员来讲,深切了解严重平安漏 洞是相当主要的,如:跨站点剧本(XSS)、跨站恳求捏造(CSRF)、代码注入破绽、字符编码破绽。经由过程利用PHP的特别功效和函数, 如:mysql_real_escape_string等等,你可以编写出平安的代码。
5- 代码正文
代码正文是代码的主要构成局部。经由过程代码正文可以晓得该变量或函数是做甚么的,这将在从此的代码保护中非常有效。
6- 防止短标签
把一切用到短标签的交换成完全的PHP标签。
7- 利用单引号取代双引号
字符串一直利用单引号取代双引号,以免PHP搜刮字符串内的变量招致的功能下落。 用单引号取代双引号来包括字符串,如许做会更快一些。由于PHP会在双引号包抄的字符串中搜索变量,单引号则不会
8- 本义字符串输入
利用ENT_QUOTES作参数传递给htmlspecialchars函数,以确保单引号(')也转换成HTML实体,这是一个好习气。
9- 利用逗号分隔字符串输入
经由过程echo语句输入利用逗号(,)分隔的字符串,要比利用字符串联接操作符(.)的功能更好。
10- 输入前反省传来的值
输入前反省传过去的值$_GET['query']。利用isset或empty函数,可以用来反省变量是不是为null值。
11- 其他
[*] 假如能将类的办法界说成static,就尽可能界说成static,它的速度会提拔快要4倍。
[*] $row['id'] 的速度是$row的7倍。
[*] echo 比 print 快,而且利用echo的多重参数(译注:指用逗号而不是句点)取代字符串联接,好比echo $str1,$str2。
[*] 在履行for轮回之前肯定最大轮回数,不要每轮回一次都盘算最大值,最好应用foreach取代。
[*] 刊出那些不必的变量特别是大数组,以便释放内存。
[*] 尽可能防止利用__get,__set,__autoload。
[*] require_once()价值昂贵。
[*] include文件时尽可能利用相对途径,由于它防止了PHP去include_path里查找文件的速度,解析操作体系途径所需的工夫会更少。
[*] 假如你想晓得剧本入手下手履行(译注:即办事器端收到客户端恳求)的时辰,利用$_SERVER['REQUEST_TIME']要好过time()。
[*] 函数取代正则表达式完成不异功效。
[*] str_replace函数比preg_replace函数快,但strtr函数的效力是str_replace函数的四倍。
[*] 假如一个字符串交换函数,可承受数组或字符作为参数,而且参数长度不太长,那末可以思索额定写一段交换代码,使得每次传递参数是一个字符,而不是只写一行代码承受数组作为查询和交换的参数。
[*] 利用选择分支语句(译注:即switch case)好过利用多个if,else if语句。
[*] 用@屏障毛病动静的做法十分低效,极为低效。
[*] 翻开apache的mod_deflate模块,可以进步网页的阅读速度。
[*] 数据库毗连当利用终了时应关失落,不要用长毗连。
[*] 毛病动静价值昂贵。
[*] 在办法中递增部分变量,速度是最快的。几近与在函数中挪用部分变量的速度相当。
[*] 递增一个全局变量要比递增一个部分变量慢2倍。
[*] 递增一个对象属性(如:$this->prop++)要比递增一个部分变量慢3倍。
[*] 递增一个未预界说的部分变量要比递增一个预界说的部分变量慢9至10倍。
[*] 仅界说一个部分变量而没在函数中挪用它,一样会减慢速度(其水平相当于递增一个部分变量)。PHP也许会反省看是不是存在全局变量。
[*] 办法挪用看来与类中界说的办法的数目有关,由于我(在测试办法之前和以后都)添加了10个办法,但功能上没有变更。
[*] 派生类中的办法运转起来要快于在基类中界说的一样的办法。
[*] 挪用带有一个参数的空函数,其消费的工夫相当于履行7至8次的部分变量递增操作。相似的办法挪用所消费的工夫接近于15次的部分变量递增操作。
[*] Apache解析一个PHP剧本的工夫要比解析一个静态HTML页面慢2至10倍。尽可能多用静态HTML页面,罕用剧本。
[*] 除非剧本可以缓存,不然每次挪用时城市从头编译一次。引入一套PHP缓存机制凡是可以提拔25%至100%的功能,以避免除编译开支。
[*] 尽可能做缓存,可以使用memcached。memcached是一款高功能的内存对象缓存体系,可用来减速静态Web使用法式,加重数据库负载。对运算码 (OP code)的缓存很有效,使得剧本不用为每一个恳求做从头编译。
[*] 当操作字符串并需求查验其长度是不是知足某种请求时,你想固然地会利用strlen()函数。此函数履行起来相当快,由于它不做任何盘算,只前往在 zval 布局(C的内置数据布局,用于存储PHP变量)中存储的已知字符串长度。然而,因为strlen()是函数,多几何少会有些慢,由于函数挪用会经由诸多步 骤,如字母小写化(译注:指函数名小写化,PHP不辨别函数名巨细写)、哈希查找,会跟从被挪用的函数一同履行。在某些情形下,你可使用isset() 技能减速履行你的代码。 (举例以下
) if (strlen($foo) < 5) { echo 'Foo is too short'; }
[*] (与上面
的技能
做对照
) if (!isset($foo)) { echo 'Foo is too short'; } 挪用isset()刚巧比strlen()快,由于与后者分歧的是,isset()作为一种言语布局,意味着它的履行不需求函数查找和字母小写化。也就是说,实践上在查验字符串长度的顶层代码中你没有花太多开支。
[*] 当履行变量$i的递增或递加时,$i++会比++$i慢一些。这类差别是PHP独有的,其实不合用于其他言语,所以请不要修正你的C或Java代码 并期望它们能当即变快,没用的。++$i更快是由于它只需求3条指令(opcodes),$i++则需求4条指令。后置递增实践上会发生一个一时变量,这 个一时变量随后被递增。而前置递增直接在原值上递增。这是最优化处置的一种,正如Zend的PHP优化器所作的那样。切记这个优化处置不掉为一个好主张, 由于并非一切的指令优化器城市做一样的优化处置,而且存在大批没有拆卸指令优化器的互联网办事供应商(ISPs)和办事器。
[*] 并非事必面向对象(OOP),面向对象常常开支很大,每一个办法和对象挪用城市损耗良多内存。
[*] 并不是要用类完成一切的数据布局,数组也很有效。
[*] 不要把办法细分得过量,细心想一想你真正盘算重用的是哪些代码?
[*] 当你需求时,你总能把代码分化成办法。
[*] 尽可能采取大批的PHP内置函数。
[*] 假如在代码中存在大批耗时的函数,你可以思索用C扩大的体例完成它们。
[*] 评价查验(profile)你的代码。查验器会告知你,代码的哪些局部损耗了几何工夫。Xdebug调试器包括了查验法式,评价查验整体上可以显示出代码的瓶颈。
[*] mod_zip可作为Apache模块,用来即时紧缩你的数据,并可以让数据传输量下降80%。
[*] 在可以用file_get_contents替换file、fopen、feof、fgets等系列办法的情形下,尽可能用file_get_contents,由于他的效力高很多!然而要注重file_get_contents在翻开一个URL文件时分的PHP版本成绩;
[*] 尽可能的少停止文件操作,固然PHP的文件操作效力也不低的;
[*] 优化Select SQL语句,在能够的情形下尽可能少的停止Insert、Update操作(在update上,我被恶批过);
[*] 尽量的利用PHP外部函数(然而我却为了找个PHP外面不存在的函数,华侈了本可以写出一个自界说函数的工夫,经历成绩啊!);
[*] 轮回外部不要声明变量,特别是大变量:对象(这仿佛不只是PHP外面要注重的成绩吧?);
[*] 多维数组尽可能不要轮回嵌套赋值;
[*] 在可以用PHP外部字符串操作函数的情形下,不要用正则表达式;
[*] foreach效力更高,尽可能用foreach取代while和for轮回;
[*] “用i+=1取代i=i+1。合适c/c++的习气,效力还高”;
[*] 对global变量,应当用完就unset()失落;
看到好的帖子最好up一下,以使得更多的人得到分享。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 实践是检验自己会不会的真理。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
页:
[1]