成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 簡單理解PHP的面向對象編程方式
全站頭部文字 我要出現在這里
簡單理解PHP的面向對象編程方式 739 2023-12-09   

與大多數可以面向對象的編程語言不一樣, PHP 是同時支持面向過程和面向對象的編程方式, PHP 開發者可以在面向過程和面向對象二者中自由選擇其一或是混合使用,不過由于在 PHP5 之前的版本中, PHP 主要還是面向過程的編程語言,因此大多時候 PHP 開發者應該還是選擇面向過程的方式進行開發,事實上, Kayo 認為即使一個 PHP 開發者完全不使用面向對象,他也能開發出很出色的 PHP 程序,我們可以想象, Web 頁面的解析本身就很過程化,在 HTML 中嵌入面向過程處理的代碼是非常自然的手段,因此不能說面向對象是一種比面向過程更加優秀的編程方式,只是另一種編程選擇,當然這里說的是 PHP 中的情況。

對于 PHP 中面向過程和面向對象各自的優缺點,相信在網上稍查一下就會很清楚了,面向過程開發周期短,發布快,效率較高,面向對象開發周期長,效率較低但易于維護,改進,擴展和開發 API 。顯然易見,我們很難說哪一個方式會更優秀,與其爭論哪一種編程方式更優秀,不如盡量發揮出兩種編程方式各自的優勢。

回到 PHP 的面向對象編程,在使用面向對象的過程中還是很容易就感受到它的優勢,最明顯的地方是代碼功能更加清晰,數據處理,用戶登陸,內容呈現等各寫成一個類,在頁面中只需包含這些類、實例化對象,然后再用簡潔的語句應用對象就行,這與面向過程中把數據處理,用戶登陸,還有內容等部分寫在一起相比,前者的編程思路肯定更加清晰和易于理解,相信團隊開發中應該更為偏向于面向對象編程。

下面舉一個簡單的例子說明一下面向過程和面向對象兩種方式各自的優缺點

在處理表單或接受 url 參數時,為了防止 SQL 注入等問題, PHP 開發者常常需要過濾字符串。

在面向過程的方式中,我們會在需要過濾字符串的語句中調用各種過濾字符串的庫函數或自定義函數,這樣下來,頁面中就會出現很多不同的過濾函數甚至還有復雜的正則表達式,即使在頁面中寫了足夠的注釋難免還是比較混亂,下面看看面向對象的處理方式。

首先是定義了一個簡單的處理字符串的類,把各種復雜的字符串處理寫成方法(關于 PHP 面向對象的知識可以 Google ,本文不另外敘述。)

<?php 
/* 字符串處理類
 * 參數$length用作判斷字符串是否超過指定長度
 * 轉義 SQL 語句中使用的字符串中的特殊字符
 * 正則限制字符串內只能為數字
 * 判斷字符串是否為空
 * 判斷字符串長度
 
*/
 
// 創建字符串處理類
class StringFiltration {
 
  // 屬性
  var $length;
 
  // 方法
  // 構造方法
  function __construct($the_length = NULL){
    $this->length = $the_length;
  }
  // 轉義 SQL 語句中使用的字符串中的特殊字符
  function realEscapeString($the_string){
    return mysql_real_escape_string($the_string);
  }
   
  // 正則限制字符串內只能為數字
  function eregNumber($the_string){
    if( ereg("^[0-9]+$",$the_string) )
      return true;
    else
      return false;
  }
   
  // 判斷字符串是否為空
  function strlenString($the_string){
    return strlen($the_string);
  }
   
  // 判斷字符串長度
  function ifOverStrlenLength($the_string){
    if( strlen($the_string) > $this->length )
      return true;
    else
      return false;
  }
 
}
 
?>

然后在需要過濾字符串的頁面中實例化該類

$string = new StringFiltration(); 

接著在過濾或判斷字符串時調用類中定義好的方法,于是頁面中會出現一些調用方法的語句。

$email = $string->realEscapeString($_POST['email']);
$postId = $string->eregNumber($id);


在上面的例子中,我們可以看到,在面向對象處理字符串之前,我們必須定義一個類,然后再在需要的頁面中實例化這個類并調用這個類中的方法,這里看來,面向對象的效率相比面向過程是低了,而且也很麻煩,不過這樣的優勢也很明顯,實際處理或判斷字符串的語句都寫在類的內部,在調用方法的頁面并不會出現各種復雜的自定義函數和諸如正則表達式這樣復雜的語句,頁面的結構乃至整個網站的結構更加清晰了,并且在寫好一個類后,日后進行 PHP 開發時都可以再使用這個類,從長遠來看效率反而高了。因此一直都在進行 PHP 面向過程編程的開發者不妨換種思路,試試面向對象。


主站蜘蛛池模板: 大地资源高清播放在线观看| 第一财经高清直播| 陈薇薇简介 个人资料| 拨萝卜电视剧视频歌高清在线观看大牛| 山上的小屋 残雪| 拷打| 欠条怎么写才具有法律作用| accesscode在线播放| 伪装者 豆瓣| 高地1—36集电视剧免费观看剧情| 薄冰演员表| 八年级上册三峡| 我和我的父辈电影免费播放完整版| 林诗雅电影| cope消除| 夫妻性视频| 毕业生在线观看| 乱世危情电视剧演员表| 梁祝吉他谱独奏完整| 在线观看中文字幕视频| 新一剪梅| 金奎丽| 聊斋电影| 权志龙壁纸| 小清水亚美| hereweare| 免费播放电影大全免费观看| k总直播间| 《沉默的证人》电影| 孙东杓| 张晋个人资料和简历| 北京卫视电视节目单| 西海情歌原歌词全文| 亚洲电影在线观看| 真正的正义韩国电影 | 被抛弃的青春1982| 成年奶妈| 婚前婚后电影高清完整版| 小伙捡了一沓钱完整版| 老友记 第一季 1994 詹妮弗·安妮斯顿 | 姐妹头像|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103