天天看點

類與對象定義類執行個體化類使用對象成員變量成員函數

  在面向對象的程式設計語言中,類是對對象的抽象,在類中可以定義對象的屬性和方法的描述;對象是類的執行個體,類隻有被執行個體化後才能被使用。

定義類

  在PHP中,使用關鍵字class加類名的方式定義類,然後用大括号包過類體,在類體中定義類的屬性和方法。類的格式如下:

<?php
class MyClass {
    private $var;
    public function fun()
    {
       // 。。。。
    }
}
           

  MyClass為類的名稱,兩個大括号中間的部分就是類的全部内容。在PHP5以前的版本中,使用關鍵字var聲明類的屬性;而在PHP5(包括5)以後的版本中,引入了private、protected和public關鍵字,分别用來定義私有、保護和共有成員,這就可以使程式更加安全。類和定義成員函數的方法與定義普通函數的方法相同,而且還可以用關鍵字private、protected和public對成員函數的通路權限進行限定。

注意:

  一個類,即一對大括号之間的全部内容都要在一個代碼段中,即一個

"<?php ..... ?>"

之間,不能分割成多塊兒,例如:

<?php 
class MyClass{
    //..
?>
<?php
    ../
}
?>
           

這種格式是不正确的

執行個體化類

  對類定義完成後并不能直接使用,還需要對類進行執行個體化,即聲明對象。PHP中使用關鍵字new來聲明一個對象。格式如下:

  對象名 = new 類名(var0, var1, ….varn)

  在對象進行執行個體化時,需要為類的構造方法指定參數。

例如:

  定義一個學生類(Student類),在類體中定義成員變量

$name

$age

分别用來表示學生姓名和年齡;__construct()為類的構造方法,用于為類的成員變量初始化;最後定義方法getNameAndAge()來輸出學生資訊

<?php

class Student
{
    private $name;
    private $age;

    public function __construct($name, $age)//定義構造方法
    {
        $this->name = $name;
        $this->age = $age;
    }

    public function getNameAndAge()
    {
        return "學生" . $this->name . "今年" . $this->age . "周歲";
    }
}

$student = new Student("小明", );
echo $student->getNameAndAge();
           

運作結果為:

學生小明今年15周歲

使用對象

  對類定義完成後,需要将其進行執行個體化後才能使用,對象可以調用類中的公有屬性和公有方法,即被關鍵字public修飾的屬性和方法。調用方法如下:

對象名->屬性; //調用類的屬性

對象名->方法; //調用類的方法

  對上述代碼中可以發現,PHP調用類的屬性和方法使用符号”->”而非”.”,與其他的一些語言不同,初學者應該注意,不要混淆。

例如:

  定義類BOOK,并在類中定義公有成員

bookName

代表書名,公有方法

getBookName()

用來擷取圖書名稱。對Book類進行執行個體化後分别通過

bookName

屬性和

getBookName()

方法在頁面中輸出圖書名稱。

<?php

Class Book
{
    public $bookName;

    public function __construct($bookName)//定義構造方法
    {
        $this->bookName = $bookName;
    }

    public function getBookName()
    {
        return $this->bookName;
    }
}

$book = new Book("《PHP從入門到放棄》");
echo $book->bookName;
echo "<br>";
echo $book->getBookName();
           

運作結果為:

《PHP從入門到放棄》

《PHP從入門到放棄》

注:如果将類體中的屬性或方法聲明為私有或保護的成員,再次運作本執行個體将提示資訊錯誤。是以從上面的執行個體可知,PHP的屬性隻能直接調用類的公有屬性和公有方法。

成員變量

  在類中所定義的變量成為成員變量(也可成為屬性或字段)。成員變量用來儲存資訊資料,或與成員方法進行互動來實作某項功能。

定義成員變量的格式一般為:

變量聲明符 成員變量名。

  說明:變量聲明符可以使用public,private,protected,static和final中的任意一個。(有關這些的詳細用法,小編正在更新,敬請期待)

  通路成員變量和通路成員方法是一樣的,隻要把成員方法換成成員變量即可,格式為:

對象名->成員變量

例如:

  在MyClass類中聲明一個成員變量

$class_name

,接着為這個變量聲明兩個成員方法

$setClassName()

$getClassName()

。執行個體化MyClass類并為類的構造函數傳遞參數”Hello PHP”,最後輸出結果

<?php

class MyClass
{
    public $class_name;

    function setClassName($name)
    {
        $this->class_name = $name;
    }

    function getClassName(){
        return $this->class_name;
    }
}

$c_book = new MyClass();
$c_book->setClassName("Hello PHP");
echo $c_book->class_name.'<br>';
echo $c_book->getClassName();
           

運作結果為:

Hello PHP

Hello PHP

成員函數

  在類體中所定義的函數稱為成員函數或成員方法,主要是為了實作某項功能,在PHP4.x中定義成員函數的方法與定義普通函數的方法相同,而在PHP5.x中可以為成員方法設定權限修飾符,進而可以有效的提高代碼的邏輯性和安全性。PHP5.x中定義類的成員函數的文法格式如下:

通路權限修飾符 function 成員函數名 (var0, var1, …, varn)

{

//函數體

}

例如:

  定義類MyClass并在類體中定義屬性

$name

,定義公有方法

setName()

getName()

分别用來為屬性

$name

指派和擷取

$name

的值,代碼如下:

<?php

Class MyClass
{
    private $name;

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }

}
$myClass = new MyClass();//對類進行執行個體化
$myClass->setName("計算機");
echo $myClass->getName();
           

運作結果為:

計算機

純手打,有關面向對象的詳細講解,仍在持續更新,如有不到之處,望多多指正。