前情提要
property是這個物件應該有的一些變數,property前面的public、private是『 修飾子 』,表示該property的使用權限,這個之後會再詳細介紹。
class裡的成員前面幾乎都會有所謂的修飾子(modifier),若沒有加上修飾子,則預設為public。
static:靜態變數,不須先建立物件就能直接使用
public:公有變數,建立物件後才可使用,內部(own class)、實例(instance)可用
protected:建立物件後才可使用,內部和繼承類別可用
private:私有變數,建立物件後才可使用,且只能在內部中使用
使用範圍由大至小:static > public > protected > private
constructor是class中的一種特殊的method,只有在實體化一個class後(new完後)能被執行,是用來初始化一些class特性的。
ClassName objectName = new ClassName(要帶的參數);
有兩種寫法:function __construct()
或 function ClassName
。
比較建議第一個寫法,因為有時候改了class名稱會忘記連constructor的名稱一起改。
解構子則是將已經用完不需要的物件release掉,會在unset($objectName)後被執行。
範例:
<?php
class Student
{
static $school = "NCKU";
public $name;
public $score;
private $id;
public function __construct($name, $score, $ID) //建構子
{
$this->name = $name;
$this->score = $score;
$this->id = $ID;
}
public function showScore()
{
echo $this->name . " got " . $this->score . "\n";
}
private function showID()
{
echo $this->name . "'s studentID is ' " . $this->id. "\n";
}
}
echo Student::$school."\n"; // static變數不需要先建立物件就能直接使用
$name = 'Lisa';
$score = 80;
$ID = 123456;
$studentA = new Student($name, $score, $ID);
//實體化一個Student物件,帶的參數會先到constructor做初始化
$studentA->showScore();
$studentA->showID();
//Fatal error:因為showID這個method是private的,無法在class Student範圍以外的地方使用
unset($studentA);//使用完畢,解構$studentA,釋放該物件的記憶體空間