PHP中的物件導向和面向過程的編程方法_PHP教程

來源:互聯網
上載者:User
   簡介
  “真正的天才具有正確評價不確定的,有風險的和矛盾的資訊的能力。--邱吉爾”
  
  使用許多程式設計語言時,你通常只能使用物件導向或面向過程二者之一的編程方式。而在php(做為現在的主流開發語言)中,你可以自由選擇或混用。目前絕大多數php(做為現在的主流開發語言)程式員使用面向過程的方式,因為解析WEB頁面本身就非常“過程化”(從一個標籤到另一個標籤)。在HTML中嵌入過程處理代碼是很直接自然的作法,所以php(做為現在的主流開發語言)程式員通常使用這種方式。
  
  如果你是剛接觸php(做為現在的主流開發語言),用面向過程的風格來書寫代碼很可能是你唯一的選擇。但是如果你經常上php(做為現在的主流開發語言)論壇和新聞群組的話,你應該會看到有關“對象”的文章。你也可能看到過如何書寫物件導向的php(做為現在的主流開發語言)代碼的教程。或者你也可能下載過一些現成的類庫,並嘗試著去執行個體化其中的對象和使用類方法--儘管你可能沒有真正理解這些類為什麼可以工作,或者為什麼需要使用物件導向的方法來實現功能。
  
  應該使用“物件導向”的風格還是“面向過程”的風格?雙方各有支援者。像“對象是低效的”或“對象非常棒”這樣的議論也時有耳聞。本文不嘗試輕易判定兩種方法的哪種具有絕對的優勢,而是要找出每種方法的優缺點。
  
  以下是面向過程風格的程式碼範例:
  
    print "Hello, world.";
  ?>
  
  以下是物件導向風格的程式碼範例:
  
    class helloWorld {
  function myPrint() {
  print "Hello, world.";
  }
  }
  $myHelloWorld = new helloWorld();
  $myHelloWorld->myPrint();
  ?>
  
  如果你想瞭解一些“物件導向”的基本知識,請使用Google搜尋,網路上有非常多精彩的文章。
  
   誰像這樣寫代碼?
  為了理解為什麼這個論題成為論壇上口水戰的導火線,我們看一些每個陣營的比較極端的例子。我們看看“過程狂熱”和“對象狂熱”。看看他們的觀點聽起來是不是有點熟悉。
  
   過程狂熱
  過程狂熱曾在上課時被電腦教師批評,因為這種方法沒有使用更加抽象的實現方式。而支援面向過程者的觀點“它可以工作!”並不能提高其編程水平和檔次。畢業後他們可能找到一個工作,寫驅動程式,檔案系統或其它的偏向底層的編程,他們的注意力集中於速度和代碼的精鍊。
  
  “過程狂熱”極端的例子是抵制對象,抵制抽象化。他們總在想著如何讓程式運行起來更快,而不在乎別人是否能讀懂他們的代碼。他們常常把編程當成競賽而不是團隊活動。除了php(做為現在的主流開發語言)外,他們最喜愛的程式設計語言是C和彙編。在php(做為現在的主流開發語言)世界中他們可能會開發PECL模組,貢獻出高效率的代碼。
  
   對象狂熱
  對象狂熱者熱衷於在任何時候使用物件導向的風格來書寫代碼。他們沒有真正考慮過用這種方式是否會影響程式的執行效率。有時候讓人覺得他們更享受抽象的設計概念而不是現實的代碼。他們通常很可能是專案管理者或文檔書寫者。
  
  對象狂熱者指出,如果沒有抽象的設計方法我們仍然在使用0和1進行編程。他們喜歡用偽碼來描述問題。極端的例子是對象狂熱者即使知道有時候會犧牲效率仍然使用對象。 除了php(做為現在的主流開發語言),他們最喜歡的語言是Java和Smalltalk。在php(做為現在的主流開發語言)世界中,他們可能會開發PEAR模組,貢獻文檔化非常好,易於維護的代碼。
  
   不要偏激和諷刺
  你知道為什麼論壇上總是充斥著各種偏見嗎?你的經驗閱曆,你對新事物的態度都可能是原因。作為程式員,我們需要時常注意這些偏見並以開放的心態去學習新事物。
  
   你的編碼傾向?
  考慮一下當你書寫php(做為現在的主流開發語言)代碼時有什麼偏好或傾向。通常這些偏好是比較隱晦的。有時候你可能在每個項目中有著同樣的偏好。我個人傾向於“優雅”,但我不想在此定義如何才是“優雅”的代碼,那應當出現在另一篇文章裡。但是,理論化的偏好不一定適合於實際項目—相反地,他們常常是一種偏見。

http://www.bkjia.com/PHPjc/508601.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508601.htmlTechArticle簡介 “真正的天才具有正確評價不確定的,有風險的和矛盾的資訊的能力。--邱吉爾” 使用許多程式設計語言時,你通常只能使用物件導向或面...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.