如何成为PHP高手.doc_第1页
如何成为PHP高手.doc_第2页
如何成为PHP高手.doc_第3页
如何成为PHP高手.doc_第4页
如何成为PHP高手.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何成为PHP高手PHP是一门高效的网络编程语言,由于它具有编写灵活、运行快速等优点,迅速成为Web程序员的首选语言。前不久的一份权威调查表明,现在已经有31.6的网站使用PHP作为主要的服务器端编程语言。 但是,要成为一名PHP编程高手却并不容易。并不像很多人想象的那样,只要能够飞快地编写几条简单的代码去解决一个复杂的问题就是PHP编程高手了,真正的PHP高手还需要考虑更多的其它问题。以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则。 1.懒惰是金 2.编写漂亮的代码 3.追求程序的速度,而不是编程的速度 一、懒惰是金 做一个懒惰的程序员吗?这个想法太奇怪了!因为这个世界上最忙碌的人可能就是计算机程序员了。但正是因为程序员太忙了,所以才应该在编程时学会偷懒。 对于一个程序员来说,懒惰的方法有两种:其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或者项目中去。其二是编写一些有用的代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复的劳动,自然就可以懒惰一点了。 这两种偷懒的方法都非常适合PHP程序员了。 首先,PHP是在自由开放的环境中诞生和成长的一门语言。在世界各地,有成千上万的程序员,他们一直在为PHP的完美而不断奋斗,他们也愿意和别人分享自己的聪明才智和自己编写的代码。你每天都可以从一些PHP网站、邮件列表、新闻组发现大量的优秀的程序代码。这样说,我并不是鼓励你整天等着让别人为你编写代码,但是你可以“站在伟人的肩膀上”,充分发扬“拿来主义”,聪明地应用别人的程序代码可以节省你大量时间。其次,在PHP中,你可以方便地建立自己的函数库,这样可以在你以后编写程序时省去很多麻烦。 下面笔者为大家介绍几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。如果你能把它们加入到你自己的函数库中,迟早你将会发现自己受益无穷。 1.通用数据库处理函数 和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。 在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。就笔者个人来说,非常喜欢使用这些函数,因为可以直接使用一些简单的诸如query、next_record之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。 如果你需要这些函数,你可以通过访问以下的几个网址而得到: use.de/ http:/phpclasses.UpperD/browse.html/package/20 / 2.变量调试函数 PHP程序的调试一直是一件让人头疼的事,它既不像VB等高级语言那样有集成的编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行。其实,我们完全可以通过灵活地使用echo语句来完成对PHP的调试工作。下面的几个函数可以让你随时查看程序中任何变量的类型及其值。1. functionss_array_as_string($array,$column=0)2. $str=Array(n;3. while(list($var,$val)=each($array)4. for($i=0;$i$column1;$i)5. $str.=nbsp;nbsp;nbsp;nbsp;6. 7. $str.=$var.=;8. $str.=ss_as_string($val,$column1).n;9. 10. for($i=0;$i$column;$i)11. $str.=nbsp;nbsp;nbsp;nbsp;12. 13. return$str.);14. 15. functionss_object_as_string($object,$column=0)16. if(emptyempty($objectclassname)17. return$object;18. 19. else20. $str=$objectclassname.(n;21. while(list(,$var)=each($objectpersistent_slots)22. for($i=0;$i$column;$i)23. $str.=nbsp;nbsp;nbsp;nbsp;24. 25. global$var;26. $str.=$var.=;27. $str.=ss_as_string($var,column1).n;28. 29. for($i=0;$i$column;$i)30. $str.=nbsp;nbsp;nbsp;nbsp;31. 32. return$str.);33. 34. 35. functionss_as_string($thing,$column=0)36. if(is_object($thing)37. returnss_object_as_string($thing,$column);38. 39. elseif(is_array($thing)40. returnss_array_as_string($thing,$column);41. 42. elseif(is_double($thing)43. returnDouble(.$thing.);44. 45. elseif(is_long($thing)46. returnLong(.$thing.);47. 48. elseif(is_string($thing)49. returnString(.$thing.);50. 51. else52. returnUnknown(.$thing.);53. 54. 需要的时候,在程序中简单地加入下面的一条代码即可查看程序中的所使用的变量(包括数组和对象)的类型和值:echo ss_as_string($my_variable);使用下面的语句,我们可以直接查看程序中所有的变量的值:echo ss_as_string($GLOBALS);3. 控制Log信息的函数调试PHP程序的另外一种重要的方法就是查看Log信息。如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。下面的几个函数可以方便地实现这个功能。1. $ss_log_level=0;2. $ss_log_filename=/tmp/sslog;3. $ss_log_levels=array(4. NONE=0,5. ERROR=1,6. INFO=2,7. DEBUG=3);8. functionss_log_set_level($level=ERROR)9. global$ss_log_level;10. $ss_log_level=$level;11. 12. functionss_log($level,$message)13. global$ss_log_level,$sslogfilename;14. if($ss_log_levels$ss_log_levelfor ($i=0; $i, b, $string).;/这段代码测试ereg_replace的运行速度for ($i=0; $i1000; $i+) ereg_replace(, , $string).;3.注意字符串的引用PHP和其它很多编程语言一样,可以使用双引号()来引用字符串,也可以使用单引号()。但是在PHP中,如果使用双引号来引用字符串,那么PHP解析器将首先分析字符串中有没有对变量的引用,有变量的话,将对变量进行替换。如果是单引号,则没有如此复杂直接将单引号包含起来的所有字符串直接显示出来。显然,在PHP编程中,如果使用单引号引用字符串变量要比使用双引号快速一些。4.在数据库中避免使用联合操作比起其它的Web编程语言来说,PHP的数据库功能十分强大。但是在PHP中数据库的运行仍然是一件十分费时费力的事情,所以,作为一个Web程序员,要尽量减少数据库的查询操作,同时应该为数据库建立适当的索引。另一件值得注意的事情是在用PHP操作数据库时,尽可能不使用多个数据表的联合操作,尽管联合操作可以增强数据库的查询功能,但是却大大增加了服务器的负担。为了说明这个问题,我们可以看看下面的这个简单的例子。我们在数据库中创建了两个数据表foo和big_foo。在数据表foo中,只有一个字段,包含了从1-1000之间的所有自然数。数据表big_foo同样只有一个字段,但包含了从1-1,000,000之间的全部自然数。所以,从大小上说,big_foo等于foo与它自身进行了联合操作。$db-query(select * from foo);0.032273 secs$db-next_record();0.00048999999999999 secs$db-query(insert into foo values (NULL);0.019506 secs$db-query(select * from foo as a, foo as b);17.280596 secs$db-query(select * from foo as a, foo as b where a.id b.id);14.645251 secs$db-query(select * from foo as a, foo as b where a.id = b.id);0.041269 secs$db-query(select * from big_foo);25.393672 secs从上面操作结果我们可以发现,对于两个有1000条记录的数据表进行联合,其速度并不比对一个1000000条纪录的大型数据表单独进行操作快多少。5.注意include与require的区别在PHP变成中,include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:if($something)include(somefile);但不管$something取何值,下面的代码将把文件somefile包含进文件里:if($something)require(somefile);下面的这个有趣的例子充分说明了这两个函数之间的不同。$i = 1;while ($i 3) require(somefile.$i);$i+;在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include();$i = 1;w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论