PHP中類的理解和應用[二]

來源:互聯網
上載者:User
PHP中類的理解和應用[二]
  
    許多PHP的愛好者在學習過程中感到對PHP中類的概念較難理解和掌握,雖然知道類既然存在就有其存在的道理,但是由於平時接觸和使用的機會較少,也就一略而過。其實,只要我們理解變數和函數這些PHP基本概念的話,掌握類的含義就不成問題。鑒於類在PHP的重要作用,本文將結合具體案例介紹PHP中類的概念和應用。
  
  
  (一)
  
    所謂類就是指由變數和作用於變數的函數組成的集合。類提供了一種對現實世界中事物的描述方式。通過有效使用類,我們可以將描述同一對象的多個變數和函數組合在一起,作為一個整體使用,從而使編寫出來的程式更直觀,更合理,更易於維護。
  
    舉一個比較通俗的例子,我們可以建立一個名為Bike的類來描述現實生活中的一輛單車。首先,我們設定該類中的變數包括踏板$pedals,鏈條$chain,前輪$front wheel,後輪$rear wheel,刹車$brakes, 以及手柄$handle。然後,我們建立停車Stop(), 加速Accelerate(), 左轉TurnLeft()和右轉TurnRight()等函數。這樣,我們就有了一個可以描述單車這一對象所有行為和屬性的類。例如,我們可以將$front wheel 和$rear wheel變數傳入TurnLeft()函數,從而得到某種輸出結果。
  
    也許有人會問上述例子雖然有趣,但是我們完全可以使用常規的變數和函數實現同樣功能,為什麼一定要堅持使用這麼煩瑣的類呢?當然,如果我們在指令碼中只需要描述一輛單車話,定義一個類似乎沒有什麼特殊的價值。但是,如果當指令碼需要涉及多輛單車時呢?如果我們還是採用常規的為每量單車都定義變數和函數的方法,那麼光是跟蹤每個變數,確保正確的變數輸入正確的函數就是一項相當複雜的工作。相反,如果採用類的方式,就可以有效減少所需變數的數量。此外,一個已經定義的類還可以被包含在其它檔案或指令碼中,從而實現代碼的重複利用。
  
  
  (二)
  
    對PHP類的概念有所瞭解之後,我們就來具體看一下如何在指令碼中建立和使用類。
  
    相信大家在建立網站時一定會因為要顧及頁面的顯示效果,字型的樣式和大小等細節而影響對整個頁面配置和整個網站流程的設計和構思。下面,我們就利用PHP的類來控制HTML的頁面輸出。
  
    首先,我們使用如下代碼建立一個名為Style的類,並在類中定義設定頁面屬性所需的變數:
  
  <?php
  
  class Style {
  
  var $text;
  
  var $alink;
  
  var $vlink;
  
  var $link;
  
  var $bgcol;
  
  var $face;
  
  var $size;
  
  var $align;
  
  var $valign;
  
  }
  
  ?>
  
    相信熟悉HTML語言的讀者一定不會對我們在Style類中聲名的變數感到陌生。
  
    下面,我們在Style類中建立一個與類同名的函數。代碼如下:
  
  <?php
  
  class Style {
  
  function Style ($text="#000000",$alink="#AA00AA",$vlink="#AA00AA",
  
  $link="#3333FF",$bgcol="#999999",$face="Arial",$size=3,
  
  $align="CENTER",$valign= "TOP")
  
  {
  
  $this->text=$text;
  
  $this->alink=$alink;
  
  $this->vlink=$vlink;
  
  $this->link=$link;
  
  $this->bgcol=$bgcol;
  
  $this->face=$face;
  
  $this->size=$size;
  
  $this->align=$align;
  
  $this->valign=$valign;
  
  }
  
  }
  
  ?>
  
  說明:
  
  在類中可以使用“$this”指代類本身,使用“->”運算子引用類中的各個變數或函數。類中建立的與類同名的函數稱為建構函式。建構函式在建立新的對象執行個體時自動執行,從而將類中設定的預設值賦予該對象執行個體。
  
    PHP中,我們可以通過建立對象執行個體的方法使用一個已經定義的類。文法格式如下:
  
    <?php $Instance_name = new Class; ?>
  
    例如,本例中我們可以使用如下代碼建立一個名為$Basic的對象執行個體,該對象執行個體將自動獲得Style類中建構函式指定的預設值:
  
    <?php $Basic = new Style; ?>
  
    一個類可以建立多個對象執行個體,其中每個對象執行個體都繼承該類的預設屬性,可以調用類中的所有變數和函數。有時我們可能需要為由同一個類建立的多個對象執行個體設定不同的屬性,雖然我們可以在建立對象執行個體時修改類的預設值,但是這種方式一方面缺乏靈活性,另一方面按照PHP的約定,如果使用者在建立新的對象執行個體時聲明了某個變數值的話,則必須同時聲明該類中所聲明變數之後的所有變數。例如,如果我們在建立$Basic對象執行個體時顯式修改了text變數值的話,則必須同時再聲明該類中位於text變數之後的所有變數,即Style類的全部變數都需要再重新聲明一遍。顯然,我們需要使用其它更為便捷的方式修改對象執行個體中的某個變數值。這裡,我們可以通過在Style類中建立一個專門用於修改變數值的函數實現上述功能。具體代碼如下:
  
  Function Set($varname,$value) {
  
  $this->$varname=$value;
  
  }
  
    例如,如果我們需要將$Basic對象執行個體中size變數的值改為2時,使用如下代碼即可實現:
  
  <?php $Basic->Set( ‘size’, 2); ?>
  
  說明:
  
  ->運算子用於向PHP解譯器說明運行$Basic對象執行個體中的Set()函數。
  
    通過有效使用Set()函數,我們可以靈活的設定和控制不同的對象執行個體。比方說,如果我們希望為頁面輸出表格的標題列和內容行設定不同的背景顏色和字型大小的話,可以首先建立兩個對象執行個體,然後使用Set()函數分別設定各自不同的屬性。具體代碼如下:
  
  <?php
  
  $Tableheader= new Style;
  
  $Tableheader->Set( 'text', '#0000FF');
  
  $Tableheader->Set( 'bgcol', '#000000');
  
  ?>
  
  <?php
  
  $Tablecontent=new Style;
  
  $Tablecontent->Set( 'bgcol', '#AAAAAA');
  
  $Tablecontent->Set( 'size',2);
  
  ?>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.