PHP是一門高效的網絡編程語言
但是
一
做一個懶惰的程序員嗎?這個想法太奇怪了!因為這個世界上最忙碌的人可能就是計算機程序員了
對於一個程序員來說
其一
其二是編寫一些有用的代碼建立一個函數庫
這兩種偷懶的方法都非常適合PHP程序員了
首先
下面筆者為大家介紹幾個通用的函數
和其它的CGI函數相比
在網上
如果你需要這些函數
_blank>http://phplib
_blank>http://phpclasses
linuxbox
PHP程序的調試一直是一件讓人頭疼的事
下面的幾個函數可以讓你隨時查看程序中任何變量的類型及其值
function ss_array_as_string (&$array
{
$str =
{
for ($i =
{
$str
}
$str
$str
n
}
for ($i =
{
$str
}
return $str
}
function ss_object_as_string (&$object
{
if (empty($object->classname))
{
return
}
else
{
$str = $object->classname
{
for ($i =
{
$str
}
global $$var;
$str
$str
n
}
for ($i =
{
$str
}
return $str
}
}
function ss_as_string (&$thing
{
if (is_object($thing))
{
return ss_object_as_string($thing
}
elseif (is_array($thing))
{
return ss_array_as_string($thing
}
elseif (is_double($thing))
{
return
}
elseif (is_long($thing))
{
return
}
elseif (is_string($thing))
{
return
}
else
{
return
}
}
需要的時候
echo ss_as_string($my_variable);
使用下面的語句
echo ss_as_string($GLOBALS);
調試PHP程序的另外一種重要的方法就是查看Log信息
$ss_log_level =
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
NONE =>
ERROR =>
INFO =>
DEBUG =>
function ss_log_set_level ($level = ERROR)
{
global $ss_log_level;
$ss_log_level = $level;
}
function ss_log ($level
{
global $ss_log_level
if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level])
{
// 不顯示Log信息
return false;
}
$fd = fopen($ss_log_filename
fputs($fd
fclose($fd);
return true;
}
function ss_log_reset ()
{
global $ss_log_filename;
@unlink($ss_log_filename);
}
在上面的函數中
ss_log_set_level(INFO);
那麼
ss_log(ERROR
ss_log(INFO
ss_log(DEBUG
你也可以隨時使用下面的語句清空LOG信息
ss_log_reset();
為了優化代碼
function ss_timing_start ($name = default)
{
global $ss_timing_start_times;
$ss_timing_start_times[$name] = explode(
}
function ss_timing_stop ($name = default)
{
global $ss_timing_stop_times;
$ss_timing_stop_times[$name] = explode(
}
function ss_timing_current ($name = default)
{
global $ss_timing_start_times
if (!isset($ss_timing_start_times[$name]))
{
return
}
if (!isset($ss_timing_stop_times[$name]))
{
$stop_time = explode(
}
else
{
$stop_time = $ss_timing_stop_times[$name];
}
$current = $stop_time[
$current += $stop_time[
return $current;
}
現在可以輕松地檢查任何一段代碼的執行時間了
對於數據庫來說
function query($Query_String
{
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String
ss_timing_stop();
ss_log(INFO
$this->Row =
$this->Errno = mysql_errno();
$this->Error = mysql_error();
if ($halt_on_error && !$this->Query_ID)
{
$this->halt(
}
return $this->Query_ID;
}
二
在編寫PHP程序時
因為PHP是一種嵌入式編程語言
這種做法一方面使HTML代碼和PHP代碼都簡單易讀
同前端程序不同
正如前面所說的那樣
如果使用後一種方法的話
require(timing
ss_timing_start();
include(test
ss_timing_stop();
echo
;
?>
在上面的代碼中
使用包含文件的另外一個缺點是
其實
if ( defined( __LIBA_INC) ) return;
define( __LIBA_INC
/*
* 代碼
*/
?>
PHP也是一種面向對象的語言
三
在網站建設中
因為PHP是一門嵌入式Web編程語言
下面的一段代碼證明了我們的結論
使用str-replace而不是ereg-replace 習慣使用Perl進行編程的程序員更加願意使用ereg_replace完成字符串替換工作
測試str_replace和ereg_replace的運行速度
//這段代碼測試str_replace的運行速度
emphasis; ?>
for ($i=
{
str_replace(i>
;
}
?>
//這段代碼測試ereg_replace的運行速度
for ($i=
{
ereg_replace(<([/]*)i>
}
?>
//打印結果
結論
使用str_replace的時間 -
使用ereg_pattern的時間 -
運行上面的代碼
使用str_replace的時間 -
使用ereg_pattern的時間 -
從運行的結果我們可以看出使用str_replace替代ereg_replace作為字符串替換函數
PHP和其它很多編程語言一樣
比起其它的Web編程語言來說
為了說明這個問題
我們在數據庫中創建了兩個數據表foo和big_foo
$db->query(
$db->next_record();
$db->query(
$db->query(
$db->query(
$db->query(
$db->query(
從上面操作結果我們可以發現
在PHP變成中
if($something)
{
include(
}
但不管$something取何值
if($something)
{
require(
}
下面的這個有趣的例子充分說明了這兩個函數之間的不同
$i =
while ($i <
{
require(
$i++;
}
在這段代碼中
$i =
while ($i <
{
include(
$i++;
}
PHP中echo和print的功能也基本相同
$ret = print
這意味著print可用在一些復雜的表達式中
From:http://tw.wingwit.com/Article/program/PHP/201311/21424.html