閱讀139 返回首頁    go 技術社區[雲棲]


類與對象

本來轉載自:https://yq.aliyun.com/articles/www.ttkmwl.com  --最有特色的程序代碼下載論壇-通天源碼論壇

db94ca171ab2394b64937063bbe61997e11f795b

  在麵向對象的編程語言中,類是對對象的抽象,在類中可以定義對象的屬性和方法的描述;對象是類的實例,類隻有被實例化後才能被使用。

定義類

在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("小明", 15);
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();

最後更新:2017-06-28 17:02:11

  上一篇:go  2016阿裏技術這一年
  下一篇:go  Tor 項目正開發加固版的 Tor 瀏覽器