但是,要成為一名PHP編程高手卻 " /> 成人网在线视频,国产一级毛片午夜,999视频在线播放777

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP 高手之路(一)

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

    為了優(yōu)化代碼,我們需要一種可以測(cè)試代碼運(yùn)行時(shí)間的方法,從而來(lái)選擇最優(yōu)的代碼。下面的函數(shù)可以測(cè)試運(yùn)行代碼所需的時(shí)間:
  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í)使用多個(gè)計(jì)時(shí)器,只需在使用上述的幾個(gè)函數(shù)時(shí)設(shè)定不同的參數(shù)作為計(jì)時(shí)器的名稱就可以了。
  5.調(diào)試和優(yōu)化數(shù)據(jù)庫(kù)的操作
  對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),運(yùn)行速度是至關(guān)重要的。盡管很多書(shū)籍和文章都講授了一些快速運(yùn)行數(shù)據(jù)庫(kù)的方法,但是所有的方法都必須經(jīng)過(guò)實(shí)踐的檢驗(yàn)。下面我們將把phpLib函數(shù)庫(kù)中的query()函數(shù)和上面介紹的幾個(gè)函數(shù)綜合起來(lái)編寫成新的query()函數(shù),和原先的函數(shù)相比,這個(gè)函數(shù)增加了運(yùn)行時(shí)間的監(jiān)測(cè)功能。
  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ù))

php技術(shù)PHP 高手之路(一),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 丁香六月欧美 | a亚洲视频 | 法国性xxxxx极品 | 激情综合网五月天 | 久久亚洲国产最新网站 | 视频成人永久免费看 | 国内精品久久久久久久亚洲 | 久久久青草青青国产亚洲免观 | 日韩欧美一区二区三区中文精品 | 四虎永久在线观看免费网站网址 | 99精品伊人久久久大香线蕉 | 亚洲制服欧美自拍另类 | 日韩激情文学 | 亚洲国产一区在线二区三区 | 久久终合 | 四虎永久免费在线 | 国产精品第12页 | 一区不卡 | 国产91av在线 | 美女脱了内裤打开腿让人桶网站o | 亚洲一道本| 久久无码精品一区二区三区 | 国产情侣真实露脸在线 | 国产精品日本不卡一区二区 | 国产成人成人一区二区 | 伊人成人在线 | 久久国产高清波多野结衣 | 久久久国产一区二区三区 | 亚洲图片在线视频 | 亚洲另类激情专区小说婷婷久 | 在线视频第二页 | 日韩在线精品 | 91区国产福利在线观看午夜 | 91视频大全 | 国产精品久久99 | 亚洲人成图片小说网站 | 男人猛桶女人下面视频国产 | 亚洲欧美黄色片 | 久久精品亚洲综合一品 | 日本一本在线视频 | 91青青国产在线观看免费 |