狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

PHP 高手之路(一)

PHP 高手之路(一)

更新時間:2020-02-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

PHP是一門高效的網(wǎng)絡(luò)編程語言,由于它具有編寫靈活、運(yùn)行快速等優(yōu)點,迅速成為Web程序員的首選語言。前不久的一份權(quán)威調(diào)查表明,現(xiàn)在已經(jīng)有31.6%的網(wǎng)站使用PHP作為主要的服務(wù)器端編程語言。
  但是,要成為一名PHP編程高手卻并不容易。并不像很多人想象的那樣,只要能夠飛快地編寫幾條簡單的代碼去解決一個復(fù)雜的問題就是PHP編程高手了,真正的PHP高手還需要考慮更多的其它問題。以下三條準(zhǔn)則是一名成熟的PHP程序員在編程中應(yīng)該首先遵循的準(zhǔn)則。
  1.懶惰是金
  2.編寫漂亮的代碼
  3.追求程序的速度,而不是編程的速度
  一、懶惰是金
  做一個懶惰的程序員嗎?這個想法太奇怪了!因為這個世界上最忙碌的人可能就是計算機(jī)程序員了。但正是因為程序員太忙了,所以才應(yīng)該在編程時學(xué)會偷懶。
  對于一個程序員來說,懶惰的方法有兩種:其一,大膽使用現(xiàn)成的別人的程序代碼,把這些代碼融入到你自己的程序或者項目中去。其二是編寫一些有用的代碼建立一個函數(shù)庫,在將來編寫程序時可以順手拈來,省去了許多重復(fù)的勞動,自然就可以懶惰一點了。
  這兩種偷懶的方法都非常適合PHP程序員了。
  首先,PHP是在自由開放的環(huán)境中誕生和成長的一門語言。在世界各地,有成千上萬的程序員,他們一直在為PHP的完美而不斷奮斗,他們也愿意和別人分享自己的聰明才智和自己編寫的代碼。你每天都可以從一些PHP網(wǎng)站、郵件列表、新聞組發(fā)現(xiàn)大量的優(yōu)秀的程序代碼。這樣說,我并不是鼓勵你整天等著讓別人為你編寫代碼,但是你可以“站在偉人的肩膀上”,充分發(fā)揚(yáng)“拿來主義”,聰明地應(yīng)用別人的程序代碼可以節(jié)省你大量時間。其次,在PHP中,你可以方便地建立自己的函數(shù)庫,這樣可以在你以后編寫程序時省去很多麻煩。
  下面筆者為大家介紹幾個通用的函數(shù),這些函數(shù)有的來自網(wǎng)上的一些開放源代碼的項目,有的精選自郵件列表。如果你能把它們加入到你自己的函數(shù)庫中,遲早你將會發(fā)現(xiàn)自己受益無窮。
  1.通用數(shù)據(jù)庫處理函數(shù)
  和其它的CGI函數(shù)相比,PHP的優(yōu)點之一是具有很強(qiáng)大的數(shù)據(jù)庫處理能力。但是,在PHP中,對于不同的數(shù)據(jù)庫都使用一些特定的函數(shù)來專門處理,缺少通用的數(shù)據(jù)庫處理函數(shù)。這大大降低了程序代碼的可移植性,這也為初學(xué)編程的朋友帶來了很多不便。
  在網(wǎng)上,許多程序員都通過封裝類解決了這個問題。他們編寫了統(tǒng)一的函數(shù)用來處理任何流行的數(shù)據(jù)庫——不管是在Linux世界深受歡迎的Mysql還是在Windows平臺上廣泛流行的SqlServer。就筆者個人來說,非常喜歡使用這些函數(shù),因為可以直接使用一些簡單的諸如"query"、"next_record"之類的函數(shù),而不需要考慮數(shù)據(jù)庫的連接、數(shù)據(jù)庫句柄這些復(fù)雜的東西,更不需要考慮使用的是何種數(shù)據(jù)庫。
  如果你需要這些函數(shù),你可以通過訪問以下的幾個網(wǎng)址而得到:
  http://phplib.netuse.de/
  http://phpclasses.UpperDesign.com/browse.html/package/20
  http://phpdb.linuxbox.com/
  2.變量調(diào)試函數(shù)
  PHP程序的調(diào)試一直是一件讓人頭疼的事,它既不像VB等高級語言那樣有集成的編譯調(diào)試環(huán)境,也不想Perl那樣可以在Linux或者DOS環(huán)境下直接運(yùn)行。其實,我們完全可以通過靈活地使用echo語句來完成對PHP的調(diào)試工作。
  下面的幾個函數(shù)可以讓你隨時查看程序中任何變量的類型及其值。
  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.")";
  }
  }
  需要的時候,在程序中簡單地加入下面的一條代碼即可查看程序中的所使用的變量(包括數(shù)組和對象)的類型和值:
  echo ss_as_string($my_variable);
  使用下面的語句,我們可以直接查看程序中所有的變量的值:
  echo ss_as_string($GLOBALS);
  3. 控制Log信息的函數(shù)
  調(diào)試PHP程序的另外一種重要的方法就是查看Log信息。如果能夠方便地控制Log信息的級別以及Log信息的顯示內(nèi)容,將會給程序調(diào)試帶來更多的便利。下面的幾個函數(shù)可以方便地實現(xiàn)這個功能。
  $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);
  }
  在上面的函數(shù)中,有四個Log級別變量。運(yùn)行PHP程序時,只有當(dāng)Log的級別低于預(yù)設(shè)的級別值時,Log信息才可以被記錄和顯示出來。例如,在程序中加入如下的一條語句:
  ss_log_set_level(INFO);
  那么,運(yùn)行PHP程序時,只有ERROR和INFO級別的LOG信息才能被記錄和顯示出來,DEBUG級的信息則被忽略了。除此之外,我們還可以設(shè)定顯示的信息內(nèi)容,其語句如下:
  ss_log(ERROR, "testing level ERROR");
  ss_log(INFO, "testing level INFO");
  ss_log(DEBUG, "testing level DEBUG");
  你也可以隨時使用下面的語句清空LOG信息:
  ss_log_reset();
  4.速度測試函數(shù)
   
    為了優(yōu)化代碼,我們需要一種可以測試代碼運(yùn)行時間的方法,從而來選擇最優(yōu)的代碼。下面的函數(shù)可以測試運(yùn)行代碼所需的時間:
  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;
  }
  現(xiàn)在可以輕松地檢查任何一段代碼的執(zhí)行時間了,甚至我們可以同時使用多個計時器,只需在使用上述的幾個函數(shù)時設(shè)定不同的參數(shù)作為計時器的名稱就可以了。
  5.調(diào)試和優(yōu)化數(shù)據(jù)庫的操作
  對于數(shù)據(jù)庫來說,運(yùn)行速度是至關(guān)重要的。盡管很多書籍和文章都講授了一些快速運(yùn)行數(shù)據(jù)庫的方法,但是所有的方法都必須經(jīng)過實踐的檢驗。下面我們將把PHPLib函數(shù)庫中的query()函數(shù)和上面介紹的幾個函數(shù)綜合起來編寫成新的query()函數(shù),和原先的函數(shù)相比,這個函數(shù)增加了運(yùn)行時間的監(jiān)測功能。
  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;
  }(未完待續(xù))

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产伦精品一区二区三| 久久综合色一综合色88| 在线一区欧美| 一本久久综合| 国产伦精品一区二区三区视频孕妇| 亚洲午夜高清视频| 伊甸园精品99久久久久久| 久久精品成人一区二区三区蜜臀| 97国产一区二区| 欧美国产专区| 在线观看成人av| 亚洲欧美日韩国产| 久久久久久国产精品一区| 色综合av在线| 欧美精品tushy高清| 日韩一区二区三区观看| 日韩欧美在线不卡| 国产人成亚洲第一网站在线播放| 国产精品视频麻豆| 亚洲男人都懂的| 日韩有码一区二区三区| 六月丁香综合在线视频| 国产麻豆91精品| 欧美高清视频一区二区三区在线观看| 欧美精品综合| 亚洲一区视频| 欧美日韩国产精选| xf在线a精品一区二区视频网站| 成人av综合在线| 欧美日本一区二区视频在线观看| 中文一区在线播放| 精品国产一二三区| 欧美日韩精品一区二区三区蜜桃 | 国产区欧美区日韩区| 国产精品一区在线观看乱码 | 国产一区二区久久| 成人精品在线视频观看| 一区二区免费看| 日本网站在线观看一区二区三区| 国产另类ts人妖一区二区| 97久久超碰国产精品| 国产精品视区| 91精品国产乱码| 亚洲三级电影网站| 久久成人精品无人区| 欧美国产综合| 欧美亚洲国产一区二区三区va| 久久午夜国产精品| 亚洲午夜在线电影| caoporn国产一区二区| 国产欧美日韩综合精品二区| 欧美日本一区二区在线观看| 国产精品你懂的在线欣赏| 日韩**一区毛片| 欧美日韩精品免费观看| 欧美撒尿777hd撒尿| 日韩毛片高清在线播放| 国产激情视频一区二区三区欧美 | 午夜欧美视频| 欧美视频在线一区二区三区| 国产精品麻豆99久久久久久| 激情五月激情综合网| 亚洲国产免费看| 欧美mv日韩mv国产网站| 日韩高清电影一区| 亚洲视频日本| 欧美tickle裸体挠脚心vk| 青青草视频一区| 永久域名在线精品| 精品少妇一区二区三区在线播放| 亚洲电影你懂得| 国产自产精品| 精品欧美乱码久久久久久1区2区| 日韩av网站在线观看| 国内久久精品| 国产午夜精品久久久久久久 | 国产视频不卡| 欧美经典一区二区| 欧美88av| 欧美一区二区三区在线电影| 风间由美中文字幕在线看视频国产欧美| 国产一区二区视频在线| 色综合久久天天综合网| 一区二区在线观看av| 97se亚洲国产综合自在线观| 欧美在线不卡视频| 亚洲成在人线免费| 一本久道综合久久精品| 国产精品久久久久久久久免费相片 | 国产真实乱对白精彩久久| 亚洲一卡二卡三卡四卡无卡久久| 午夜日本精品| 国产精品三级av| 欧美 日韩 国产一区二区在线视频 | 老色鬼精品视频在线观看播放| 性欧美videos另类喷潮| 亚洲资源中文字幕| 99riav国产精品| 一区二区三区精品视频在线| 在线国产日韩| 伊人开心综合网| 亚洲在线不卡| 亚洲第一久久影院| 美女爽到呻吟久久久久| 五月综合激情网| 色乱码一区二区三区88| 污片在线观看一区二区| 色欲综合视频天天天| 天堂影院一区二区| 在线看国产日韩| 国产一区二区三区国产| 日韩欧美国产一二三区| 成人激情av网| 欧美国产精品劲爆| 99香蕉国产精品偷在线观看| 亚洲综合无码一区二区| 久久在线91| 国模一区二区三区白浆| 欧美一级精品大片| 欧美不卡高清| 樱桃视频在线观看一区| 久久香蕉精品| 国产伦精品一区二区三区在线观看 | 337p亚洲精品色噜噜狠狠| 成人午夜视频在线观看| 国产精品美女一区二区三区| 在线亚洲伦理| 久久99精品网久久| 精品久久久久久久人人人人传媒| 97久久精品人人做人人爽50路 | 国产精品1区2区3区在线观看| 2023国产精品自拍| 亚洲精美视频| 韩国女主播成人在线观看| www日韩大片| 亚洲女人av| 国产传媒日韩欧美成人| 国产精品沙发午睡系列990531| 亚洲一区在线直播| 国产.欧美.日韩| 亚洲黄色免费电影| 91精品国产一区二区| 亚洲国产精品日韩| 激情深爱一区二区| 亚洲欧洲三级电影| 欧美视频三区在线播放| 午夜欧美精品久久久久久久| 五月天丁香久久| 久久久电影一区二区三区| 亚洲欧美日韩精品综合在线观看| 高潮精品一区videoshd| 亚洲一二三四在线| 日韩欧美在线123| 亚洲综合国产| 色综合久久综合网| 久久精品国产精品亚洲红杏| 中文久久乱码一区二区| 欧美日韩黄色一区二区| 亚洲成人资源| 国产91丝袜在线播放九色| 亚洲一区在线观看免费| 久久亚区不卡日本| 91成人在线免费观看| 1024亚洲| 成人午夜在线免费| 蜜臀久久99精品久久久久宅男| 国产精品色噜噜| 欧美一级久久久久久久大片| 噜噜噜在线观看免费视频日韩| 午夜精品久久| 成人av集中营| 国产专区综合网| 亚洲6080在线| 亚洲日穴在线视频| 国产视频一区二区在线| 欧美日韩精品欧美日韩精品一| 国产精品有限公司| 欧美日韩国产探花| 99久久夜色精品国产网站| 美女性感视频久久| 亚洲午夜av在线| 亚洲同性gay激情无套| 久久久久久久av麻豆果冻| 欧美一区2区视频在线观看| 色哦色哦哦色天天综合| 一区二区三区成人精品| 一本大道久久a久久综合| 99在线精品视频在线观看| 欧美激情五月| 91蜜桃免费观看视频| 国产成人免费网站| 韩国成人在线视频| 久久99国产精品免费网站| 日韩经典中文字幕一区| 午夜精品一区二区三区三上悠亚| 亚洲欧美日韩国产中文在线| 国产精品国产三级国产普通话99 | 国产精品女同互慰在线看| 日本一区二区不卡视频| 国产欧美日韩在线看|