日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP 高手之路(一)

瀏覽:21日期:2024-02-27 10:19:10
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"之類的函數,而不需要考慮數據庫的連接、數據庫句柄這些復雜的東西,更不需要考慮使用的是何種數據庫。 ;;如果你需要這些函數,你可以通過訪問以下的幾個網址而得到: ;;http://phplib.netuse.de/ ;;http://phpclasses.UpperDesign.com/browse.html/package/20 ;;http://phpdb.linuxbox.com/ ;;2.變量調試函數 ;;PHP程序的調試一直是一件讓人頭疼的事,它既不像VB等高級語言那樣有集成的編譯調試環境,也不想Perl那樣可以在Linux或者DOS環境下直接運行。其實,我們完全可以通過靈活地使用echo語句來完成對PHP的調試工作。 ;;下面的幾個函數可以讓你隨時查看程序中任何變量的類型及其值。 ;;function ss_array_as_string (&$array, $column = 0) { ;;$str = "Array( n";while(list($var, $val) = each($array)){ ;;for ($i = 0; $i < $column+1; $i++){ ;;$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";} ;;$str .= $var. ==> ; ;;$str .= ss_as_string($val, $column+1)." n";} ;;for ($i = 0; $i < $column; $i++){ ;;$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";} ;;return $str.); ;;} ;;function ss_object_as_string (&$object, $column = 0) { ;;;if (empty($object->classname)) { ;;return "$object";} ;;else { ;;$str = $object->classname."( n";while (list(,$var) = each($object->persistent_slots)) { ;;for ($i = 0; $i < $column; $i++){ ;;$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";} ;;global $$var; ;;$str .= $var. ==> ; ;;$str .= ss_as_string($$var, column+1)." n";} ;;for ($i = 0; $i < $column; $i++){ ;;$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";} ;;return $str.); ;;} ;;} ;;function ss_as_string (&$thing, $column = 0) { ;;if (is_object($thing)) { ;;return ss_object_as_string($thing, $column); ;;} ;;elseif (is_array($thing)) { ;;return 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.")";} ;;else { ;;return "Unknown(".$thing.")";} ;;} ;;需要的時候,在程序中簡單地加入下面的一條代碼即可查看程序中的所使用的變量(包括數組和對象)的類型和值: ;;echo ss_as_string($my_variable); ;;使用下面的語句,我們可以直接查看程序中所有的變量的值: ;;echo ss_as_string($GLOBALS); ;;3. 控制Log信息的函數 ;;調試PHP程序的另外一種重要的方法就是查看Log信息。如果能夠方便地控制Log信息的級別以及Log信息的顯示內容,將會給程序調試帶來更多的便利。下面的幾個函數可以方便地實現這個功能。 ;;$ss_log_level = 0; ;;$ss_log_filename = /tmp/ss-log; ;;$ss_log_levels = array( ;;NONE => 0, ;;ERROR => 1, ;;INFO => 2, ;;DEBUG => 3); ;;function ss_log_set_level ($level = ERROR) { ;;global $ss_log_level; ;;$ss_log_level = $level; ;;} ;;function ss_log ($level, $message) { ;;global $ss_log_level, $ss-log-filename; ;;if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) { ;;// 不顯示Log信息 ;;return false; ;;} ;;$fd = fopen($ss_log_filename, "a+"); ;;fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n"); ;;fclose($fd); ;;return true; ;;} ;;function ss_log_reset () { ;;global $ss_log_filename; ;;@unlink($ss_log_filename); ;;} ;;在上面的函數中,有四個Log級別變量。運行PHP程序時,只有當Log的級別低于預設的級別值時,Log信息才可以被記錄和顯示出來。例如,在程序中加入如下的一條語句: ;;ss_log_set_level(INFO); ;;那么,運行PHP程序時,只有ERROR和INFO級別的LOG信息才能被記錄和顯示出來,DEBUG級的信息則被忽略了。除此之外,我們還可以設定顯示的信息內容,其語句如下: ;;ss_log(ERROR, "testing level ERROR"); ;;ss_log(INFO, "testing level INFO"); ;;ss_log(DEBUG, "testing level DEBUG"); ;;你也可以隨時使用下面的語句清空LOG信息: ;;ss_log_reset(); ;;4.速度測試函數 ;;;;;;;為了優化代碼,我們需要一種可以測試代碼運行時間的方法,從而來選擇最優的代碼。下面的函數可以測試運行代碼所需的時間: ;;function ss_timing_start ($name = default) { ;;global $ss_timing_start_times; ;;$ss_timing_start_times[$name] = explode( , microtime()); ;;} ;;function ss_timing_stop ($name = default) { ;;global $ss_timing_stop_times; ;;$ss_timing_stop_times[$name] = explode(, microtime()); ;;} ;;function ss_timing_current ($name = default) { ;;global $ss_timing_start_times, $ss_timing_stop_times; ;;if (!isset($ss_timing_start_times[$name])) { ;;return 0; ;;} ;;if (!isset($ss_timing_stop_times[$name])) { ;;$stop_time = explode(, microtime()); ;;} ;;else { ;;$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]; ;;return $current; ;;} ;;現在可以輕松地檢查任何一段代碼的執行時間了,甚至我們可以同時使用多個計時器,只需在使用上述的幾個函數時設定不同的參數作為計時器的名稱就可以了。 ;;5.調試和優化數據庫的操作 ;;對于數據庫來說,運行速度是至關重要的。盡管很多書籍和文章都講授了一些快速運行數據庫的方法,但是所有的方法都必須經過實踐的檢驗。下面我們將把PHPLib函數庫中的query()函數和上面介紹的幾個函數綜合起來編寫成新的query()函數,和原先的函數相比,這個函數增加了運行時間的監測功能。 ;;function 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); ;;$this->Row;;= 0; ;;$this->Errno = mysql_errno(); ;;$this->Error = mysql_error(); ;;if ($halt_on_error && !$this->Query_ID) { ;;$this->halt("Invalid SQL: ".$Query_String); ;;} ;;return $this->Query_ID; ;;}(未完待續)
標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲精品精品国产亚洲综合 | 国产福利一区二区精品秒拍| 欧美搞黄网站| 亚洲www啪成人一区二区| 精品网站aaa| 国产一区三区在线播放| 欧美极品一区二区三区| 日韩精品一区二区三区中文字幕| 桃色一区二区| 伊人久久国产| 一区二区小说| 视频一区欧美精品| 亚洲人亚洲人色久| 国产精品www994| 精品成人18| 成人日韩在线观看| 亚洲高清二区| 中文视频一区| 国产午夜一区| 日本精品黄色| 久久九九精品| 免费观看在线综合| 欧美日韩亚洲一区| 蜜桃精品视频| 久久久国产精品一区二区中文| 136国产福利精品导航网址| 亚洲香蕉视频| 国内精品伊人| 婷婷中文字幕一区| 欧美日韩1区| 在线手机中文字幕| 丝袜美腿一区二区三区| 国产精品一区二区精品视频观看 | 激情久久婷婷| 日韩精品久久久久久久软件91| 国产精品sm| 精品免费av在线| 亚洲一区二区日韩| 精品一区二区三区中文字幕 | 亚洲欧美在线综合| 精品国产麻豆| 日韩精品导航| 99久久夜色精品国产亚洲1000部| 综合在线一区| 亚洲性图久久| 久久只有精品| 中文字幕日韩欧美精品高清在线| 国产suv精品一区二区四区视频 | 日韩区一区二| 亚洲精品99| 亚洲永久av| 国产精品亚洲片在线播放| 欧美特黄一区| 日韩一区二区三区免费| 国产成人精选| 国产精品宾馆| 麻豆一区二区在线| 日韩超碰人人爽人人做人人添| 丝袜美腿一区| 桃色av一区二区| 国产aa精品| 福利在线免费视频| 成人精品动漫一区二区三区| 久久性天堂网| 久久三级毛片| 亚洲区国产区| 粉嫩av一区二区三区四区五区 | 91精品1区| 欧美激情麻豆| 久久久久中文| 亚洲不卡av不卡一区二区| 91成人在线精品视频| 制服诱惑一区二区| 黄色aa久久| 国产精品久久久久久久免费观看 | 中文字幕系列一区| 国产劲爆久久| 欧美亚洲一区二区三区| 美女网站久久| 亚洲午夜黄色| 亚洲成av人片一区二区密柚| 电影91久久久| 国产一二在线播放| 精品国产中文字幕第一页| 日本久久成人网| 日韩免费小视频| 成人久久一区| 国户精品久久久久久久久久久不卡 | 日韩国产专区| 亚洲黄色网址| 久久久精品网| 国产一区观看| 另类中文字幕国产精品| 成人日韩在线观看| 欧美日韩激情| 免费看精品久久片| 国产日韩一区二区三区在线| 美女久久99| 正在播放日韩精品| 久久中文亚洲字幕| 免费观看在线色综合| 欧美视频精品全部免费观看| 久久婷婷国产| 久久一级电影| 蜜桃免费网站一区二区三区 | 日韩视频网站在线观看| 99久久夜色精品国产亚洲1000部| 亚洲一区观看| 国产极品嫩模在线观看91精品| 久久影院午夜精品| 美女黄网久久| 国产成人精品一区二区三区免费 | 国产一区二区三区不卡视频网站 | 91精品国产调教在线观看| 在线一区电影| 91精品尤物| 亚洲精品美女| 日本精品不卡| 91精品国产经典在线观看| 99视频精品全国免费| 国产精品亚洲综合色区韩国| 日韩一区二区久久| 欧美日韩18| 一区二区小说| 国产精品地址| 麻豆久久精品| 亚洲精品日本| 国精品一区二区三区| 精品免费视频| 国产麻豆一区二区三区精品视频| 免费日韩一区二区| 久久亚洲国产| 天堂8中文在线最新版在线| 国产乱码精品一区二区三区亚洲人 | 另类综合日韩欧美亚洲| 久久av一区| 黄色亚洲免费| 国产精品国产一区| 久久精品一区| 久久精品亚洲| 国产探花一区| 欧美天堂一区| 青青草国产精品亚洲专区无| 蜜桃久久久久久久| 亚洲资源av| 天堂av在线一区| 国产欧美亚洲一区| 国产精品对白| 麻豆国产精品视频| 亚洲综合福利| 日韩一区二区三区精品| 亚洲精品无吗| 91精品日本| 国产精品xvideos88| 国产一区二区三区网| 91精品xxx在线观看| 成人羞羞视频播放网站| 日本美女一区| 亚洲国产专区| 综合国产视频| 国产精品欧美大片| 精品国产欧美| 999国产精品永久免费视频app| 国产传媒av在线| 日韩中文在线电影| 午夜日韩在线| 日韩国产欧美视频| 国产精品欧美日韩一区| 蜜桃av.网站在线观看| 一本色道久久精品| 欧美日韩亚洲一区三区| 91免费精品| 婷婷激情综合| 神马久久午夜| 亚洲天堂免费| 中文在线а√在线8| 日韩专区一卡二卡| 国产精品美女在线观看直播| 亚洲成av在线| 国产农村妇女精品一区二区| 777久久精品| 亚洲永久字幕| 国产精品麻豆成人av电影艾秋| 亚洲1234区| 91成人小视频| 精品成人免费一区二区在线播放| 日韩精品欧美大片| av亚洲免费| 国产一区二区三区黄网站| 99国产成+人+综合+亚洲欧美| 乱一区二区av| 亚洲免费福利一区| 亚洲激情五月| 麻豆精品视频在线| 亚洲一区观看| 激情欧美一区二区三区| 久久国产免费看| 国产精品视频首页| 日韩av在线免费观看不卡| 欧美日韩精品一本二本三本|