PHP中的物件導向編程:通向大型PHP工程的辦法

來源:互聯網
上載者:User

這篇文章介紹在 PHP 的物件導向編程(OOP)。我將示範如何用物件導向的概念編出較少的代碼但更好的程式。祝大家好運。

物件導向編程的概念對每一個作者來說都有不同的看法,我提醒一下一個物件導向語言應有的東西:

- 資料抽象和資訊隱藏

- 繼承

- 多態性

在PHP中使用類進行封裝的辦法:

<?php
class Something {
   // In OOP classes are usually named starting with a cap letter.
   var $x;
   function setX($v) {
     // Methods start in lowercase then use lowercase to seprate
     // words in the method name example getValueOfArea()
     $this->x=$v;
   }
   function getX() {
     return $this->x;
   }
}
?>

當然你可以用你自己的辦法,但有一個標準總是好的。

PHP 中類的資料成員使用 "var" 定義,資料成員是沒有類型直到被賦值。一個資料成員可能是一個 integer、數組、聯合數組 (associative array) 或甚至對象(object). 方法在類裡定義成函數,在方法裡存取資料成員,你必須使用 $this->name 這樣的辦法,否則對方法來說是一個函數的局部變數。

使用 new 來建立一個對象

$obj = new Something;

然後使用成員函數

$obj->setX(5);

$see = $obj->getX();

setX 成員函數將 5 賦給對象(而不是類)obj 中成員變數, 然後 getX 傳回值 5.

你也可以用對象引用來存取成員變數,例如:$obj->x=6; 然而,這不一種好的物件導向編程的方法。我堅持你應使用成員函數來設定成員變數的值和通過成員函數來讀取成員變數。如果你認為成員變數是不可存取的除了使用成員函數的辦法,你將成為一個好的物件導向程式員。但不幸的是 PHP 本身沒有辦法聲明一個變數是私人的,所以允許糟糕的代碼存在。

在 PHP 中繼承使用 extend 來聲明。

<?php
class Another extends Something {
   var $y;
   function setY($v) {
     // Methods start in lowercase then use lowercase to seperate
     // words in the method name example getValueOfArea()
     $this->y=$v;
   }
   function getY() {
     return $this->y;
   }
}
?>

相關文章

聯繫我們

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