首頁  >  文章  >  php教程  >  PHP 高手之路(二)

PHP 高手之路(二)

黄舟
黄舟原創
2016-12-17 09:54:241105瀏覽

二、寫漂亮的程式碼 
  1.將後台程式與前端程式分開 
  在編寫php程式時,有些程式碼是用來處理一些事務,例如操作資料庫、進行數學運算等,而另外的一些程式碼則只是事務處理的結果顯示出來,例如一些使用echo語句將結果以HTML的格式顯示在Web瀏覽器上的PHP程式碼以及那些直接嵌入PHP程式的HTML程式碼。首先我們應該要清楚地區分這兩種程式碼,把前者稱為後台程序,把後者稱為前端程式。 
  因為PHP是一種嵌入式程式語言,也就是說,所有的PHP程式碼都可以嵌入到HTML程式碼之中,這為程式的編寫帶來了許多便利之處。但是,“物極必反”,如果在一段較長的程式中將PHP程式碼和HTML程式碼混合編寫,這將使程式雜亂無章,不利於程式的維護和閱讀。所以我們需要盡可能地將這些程式中混雜於HTML程式碼中的PHP程式碼移植出來,在專門的檔案中將這些程式碼封裝成函數,然後在HTML程式碼中使用include語句來包含這些文件,在適當的位置呼叫這些函數即可。 
  這種做法一方面使HTML程式碼和PHP程式碼都簡單易讀,另一方面因為HTML程式碼需要不斷更新,而這種分離的方法可以確保後台程式不會被破壞。 
  同前端程式不同,後台程式更追求的是穩定、結構化,極少更改,所以應該認真地設計和管理。其實,在設計台程式時,投入大量時間是值得的,“現在栽樹,以後乘涼”,在以後的設計工作中將可以輕鬆地使用現在編寫的後台程式。 
  2.彈性使用包含文件 
  如前面所說的,後台程序應安排在一系列的包含文件中。包含檔案可以透過include語句在需要時動態裝入,也可以在php.ini檔案中透過使用auto_PRepend_file指令預先自動裝入。 
  如果使用後一種方法的話,雖然取得了一勞永逸的好處,但是也有一些缺點值得我們注意。下面的一段程式碼向我們展示了解析一個龐大的包含檔案需要一定的時間: 
    require(timing.inc); 
  ss_timing_start(); 
  include(test.inc); 🠎p; timing_current (). 

  ?> 
  在上面的程式碼中,test.inc是一個1000行的包含文件,運行的結果顯示,解析這個包含文件花費了0.6秒鐘,對於一個大型網站來說,這個速度並不是可以忽略不記的。 
  使用包含檔案的另一個缺點是:如果一個檔案中的一個語句發生錯誤,會使整個網站的PHP程式都無法運作。所以使用起來也及其小心。 
  其實,對包含文件稍做處理,即可以使包含文件只在需要時進行解析。以下的程式碼讓abc.inc檔案只在程式需要時才解析: 
    if ( defined( __LIBA_INC) ) return; 
  define( __LIBA_INC, 🜠  define( __LIBA_INC, 1 );
  ?>
  3.使用物件導向的程式設計方法 
  PHP也是一種物件導向的語言,物件導向的程式設計方法 
  PHP也是一種物件導向的語言,物件導向的程式設計方法是優秀的程式設計師們非常推崇的一種軟體設計方法,在PHP程式設計中可以充分發揮物件導向語言的優勢,對程式設計中的物件進行封裝。在前面的程式碼中,我們使用了物件導向的方法,例如在管理資料庫時,我們將query()函數封裝進資料庫類別中,這大大方便了程式碼的管理,增加了程式的可讀性。 
  三、追求程式速度,而不是程式設計的速度 
  在網站建置中,程式運作速度和網頁下載速度都是關係成敗的重要因素。身為Web程式設計師,應該要更加註意程式碼的運行速度。以下介紹的幾種方法都在不同程度上提高了程式碼的運行速度。 
  1.使用內嵌的HTML程式碼,而不是PHP的echo語句。 
  因為PHP是一門嵌入式Web程式語言,可以將HTML程式碼和PHP程式碼相互嵌入。但是很多程式設計師擔心在HTML程式碼中過多的使用""嵌入PHP程式碼會多次呼叫PHP解釋器,從而降低了PHP程式碼的運行速度,所以寧願使用PHP的echo語句來輸出HTML程式碼,而不直接使用HTML程式碼。但事實卻恰恰相反。每一個PHP頁面只呼叫一次PHP解譯器來解釋所有的PHP程式碼,所以,只在需要時才嵌入PHP程式碼,而大多數的時候直接使用HTML程式碼輸入結果,不但不會降低程式的運行速度,而且因為減少了echo語句的解析,往往可以提高程式碼的運行速度。 
  下面的一段程式碼證明了我們的結論。在這段程式碼中,我們使用了前面介紹的時間測試函數。 
   

 以上是PHP 高手之路(二)的內容,更多相關文章請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn