PHP是一种高效的网络编程语言,由于其具有编译灵活、运行快速等优点,很快成为Web程序员的首选语言。 不久前的一项权威调查显示,31.6%的网站已经使用PHP作为主要的服务器端编程语言。
然而,成为 PHP 编程英雄并不容易。 与很多人想象的不同,只要你能快速编译出几段简单的代码来解决一个复杂的问题php的教程,你就是一名高级PHP程序员了。 真正的PHP前辈还需要考虑更多其他的问题。 以下三个准则是一个成熟的PHP程序员在编程时应该遵循的首要准则。
1、懒惰是金
2. 写出漂亮的代码
3.追求程序的速度,而不是编程的速度
1、懒惰是金
做一个懒惰的程序员吗? 这看法实在是太奇怪了! 因为世界上最忙的人可能是计算机程序员。 但正是因为程序员太忙,所以在编程的时候就应该学会偷懒。
对于一个程序员来说,偷懒有两种方法:第三,大胆使用别人现成的程序代码,并将这些代码集成到自己的程序或项目中。 一是把一些有用的代码编译出来,构建一个函数库,以后编译程序的时候方便使用,省去很多重复劳动,自然就可以偷懒一点了。
这两种偷懒的方式都非常适合PHP程序员。
首先,PHP是一门在自由开放的环境中诞生和成长的语言。 在世界各地,有成千上万的程序员仍在追求 PHP 的完美,他们也愿意与他人分享他们的聪明才智和他们编写的代码。 每天你都可以从一些PHP网站、邮件列表、新闻组中找到很多优秀的程序代码。 这样,我并不是鼓励你整天等着别人给你写代码,你可以“站在伟人的脖子上”,充分宣扬“拿来主义”,聪明地应用别人的程序代码可以节省你很多时间。 其次,在PHP中,你可以方便地构建自己的函数库,这可以为你以后编译程序时省去很多麻烦。
下面,笔者就为大家介绍几个常用的功能。 这些功能有些来自互联网上的一些开源项目,有些是从电子邮件列表中选择的。 如果你能将它们添加到你自己的函数库中,迟早你会发现自己受益匪浅。
1. 通用数据库处理函数
与其他CGI功能相比,PHP的优点之一就是具有非常强大的数据库处理能力。 而且PHP中都是用一些特定的函数来处理不同的数据库,缺乏通用的数据库处理函数。 这样就大大降低了程序代码的可移植性,也给初学编程的同事带来了很多不便。
在网上,很多程序员通过封装类的方式解决了这个问题。 他们编写了统一的功能来处理任何流行的数据库——无论是在Linux世界流行的Mysql,还是在Windows平台上广泛流行的SqlServer。 就笔者而言,我特别喜欢使用这种功能,因为我可以直接使用一些简单的功能,例如“query”和“next_record”,而无需考虑数据库连接和数据库句柄等复杂的事情。 不需要考虑使用什么样的数据库。
如果您需要该功能,可以访问以下网址获取:
2.变量调试功能
PHP程序的调试仍然是一个令人头疼的问题。 它既没有像VB等中间语言那样集成的编译和调试环境,也不能像Perl那样直接运行在Linux或DOS下。 虽然,我们可以灵活地使用echo语句来完成PHP的调试。
下面的函数可以让你随时查看程序中任意变量的类型和值。
函数s_array_as_string(&$array,$column=0){
$str="数组(
n”;
while(列表($var,$val)=每个($array)){
for($i=0;$i<$列+1;$i++){
$str.=" ";
$str.=$var.==>;
$str.=ss_as_string($val, $column+1)。"
n”;
for($i=0;$i<$列;$i++){
$str.=" ";
返回 $str.);
函数s_object_as_string(&$object,$column=0){
if(空($object->类名)){
返回“$对象”;
别的 {
$str=$object->类名."(
n”;
while(list(,$var)=each($object->persistent_slots)){
for($i=0;$i<$列;$i++){
$str.=" ";
全局$$var;
$str.=$var.==>;
$str.=ss_as_string($$var,列+1)。”
n”;
for($i=0;$i<$列;$i++){
$str.=" ";
返回 $str.);
函数s_as_string(&$thing,$column=0){
if(is_object($thing)){
返回 ss_object_as_string($thing, $column);
elseif(is_array($thing)){
返回 ss_array_as_string($thing, $column);
elseif(is_double($thing)){
return "Double(".$thing.")";
elseif(is_long($thing)){
return "Long(".$thing.")";
elseif(is_string($thing)){
return "String(".$thing.")";
别的 {
return "未知(".$thing.")";
必要时,只需在程序中添加如下代码即可查看程序中使用的变量(包括链表和对象)的类型和值:
echoss_as_string($my_variable);
使用下面这句话,我们可以直接查看程序中所有变量的值:
echoss_as_string($GLOBALS);
3. 控制Log信息的函数
调试PHP程序的另一个重要方法是查看Log信息。 如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。 下面的函数可以轻松实现这个功能。
$ss_log_level=0;
$ss_log_filename=/tmp/ss-log;
$ss_log_levels=数组(
无=>0,
错误=>1,
信息=>2,
调试=>3);
函数_log_set_level($level=错误){
全局$ss_log_level;
$ss_log_level=$级别;
函数 s_log($level,$message){
全局 $ss_log_level, $ss-log-文件名;
如果($ss_log_levels[$ss_log_level]<$ss_log_levels[$level]){
//不显示Log信息
返回假;
$fd=fopen($ss_log_filename,"a+");
fputs($fd, $level.-[.ss_timestamp_pretty().]-.$message."n");
fclose($fd);
返回真;
函数日志重置(){
全局$ss_log_文件名;
@unlink($ss_log_filename);
在上面的函数中,有四个日志级别变量。 PHP程序运行时,只有Log级别高于预设级别值时,才能记录并显示Log信息。 例如,在程序中添加如下语句:
ss_log_set_level(信息);
这样,在运行PHP程序时,只能记录和显示ERROR和INFO级别的LOG信息,而忽略DEBUG级别的信息。 另外,我们还可以设置显示的信息内容,语句如下:
ss_log(错误,“测试级别错误”);
ss_log(INFO,"测试级别INFO");
ss_log(DEBUG,"测试级别DEBUG");
也可以随时使用下面这句话来清除LOG信息:
ss_log_reset();
4.速度测试功能
为了优化代码,我们需要一种方法来测试代码的运行时间,然后选择最优的代码。 以下函数测量运行代码所需的时间:
函数s_timing_start($name=default){
全局$ss_timing_start_times;
$ss_timing_start_times[$name]=explode(,microtime());
函数s_timing_stop($name=default){
全局$ss_timing_stop_times;
$ss_timing_stop_times[$name]=explode(,microtime());
函数s_timing_current($name=default){
全局$ss_timing_start_times,$ss_timing_stop_times;
if(!isset($ss_timing_start_times[$name])){
返回0;
if(!isset($ss_timing_stop_times[$name])){
$stop_time=explode(,microtime());
别的 {
$stop_time=$ss_timing_stop_times[$name];
$current=$stop_time[1]-$ss_timing_start_times[$name][1];
$current+=$stop_time[0]-$ss_timing_start_times[$name][0];
返回$当前;
现在可以很容易地检测任意一段代码的执行时间,甚至我们可以同时使用多个定时器,只需在使用上述函数时设置不同的参数作为定时器的名称即可。
5、数据库运行的调试和优化
对于数据库来说,速度至关重要。 虽然很多书籍和文章都教导了一些快速运行数据库的方法php的教程,并且所有方法都必须经过实践的检验。 接下来,我们将PHPLib函数库中的query()函数和上面介绍的函数结合起来,编译一个新的query()函数。 与前面的功能相比,该功能减少了检测功能的运行时间。
函数查询($Query_String,$halt_on_error=1){
$this->connect();
ss_timing_start();
$this->Query_ID=@mysql_query($Query_String, $this->Link_ID);
ss_timing_stop();
ss_log(INFO, ss_timing_current().Secs-.$Query_String);
$这->行=0;
$this->Errno=mysql_errno();
$this->Error=mysql_error();
if($halt_on_error&&!$this->Query_ID){
$this->halt("InvalidSQL:".$Query_String);
返回$this->Query_ID;
}(待续)
trueTechArticlePHP是一种高效的网络编程语言,由于其具有编译灵活、运行快速等优点,很快成为Web程序员的首选语言。 不久前的一项权威调查显示,如今...