php類和物件的關係

2020-07-16 10:05:40

  物件導向(Object Oriented,OO)是軟體開發方法。物件導向的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平台、分散式系統、網路管理結構、CAD技術、人工智慧等領域。下面我們為大家介紹一下php中類與物件的關係。

推薦教學:PHP視訊教學

一、類和物件的關係

  類的實體化結果是物件,而物件的抽象就是類。在開發過程中,我們通常都是先抽象(幻想)出一個類,再用該類去建立物件(實現幻想的內容)。在程式中,直接使用的是我們(實現幻想)的物件,而不是抽象(幻想)的類。

二、物件導向和程序導向

1、什麼是程序導向

  程序導向就好比一個人 自己洗衣服、做飯,什麼事情都是自己解決

2、什麼是物件導向

  物件導向就是那個人有了物件,讓物件去洗衣服、做飯。

三、如何抽象一個類

class 類名{
     成員屬性:
        姓名、性別、年齡、身高、體重
     成員方法:
        說話、走路、學習、吃飯、開車
   }

  所有的類都是從成員屬性和成員方法這兩方面去宣告,屬性和方法都是類中的成員,所以屬性又叫做成員屬性,方法又叫做成員方法

1、成員屬性 -->特徵

  在物件中直接宣告變數就稱為成員屬性,可以在類中宣告多個成員變數,即物件中可以有多個成員屬性

class Person{
    var $name;    //宣告第一個成員屬性,用於儲存人的名字
    var age;      //宣告第一個成員屬性,用於儲存人的年齡
    var $sex;     //宣告第一個成員屬性,用於儲存人的性別
  }

2、成員方法 -->功能

class Person{
    var $name;    //宣告第一個成員屬性,用於儲存人的名字
    var $age;      //宣告第一個成員屬性,用於儲存人的年齡
    var $sex;     //宣告第一個成員屬性,用於儲存人的性別
    function say(){   //宣告第一個方法
        echo '人在說話';   //定義人說話的功能
    }
    function run(){   //宣告第二個方法
        echo '人在跑步';   //定義人跑步的功能
    }
    function eat(){   //宣告第三個方法
        echo '人在吃飯';   //定義人吃飯的功能
    }
}

  物件就是把相關的屬性和方法組織在一起。其中成員屬性和成員方法都是可以選的,可以只有成員屬性,也可以只有成員方法,也可以沒有成員。

四、範例化物件

一個類可以宣告多個物件,讓物件去存取成員屬性和成員方法

class Person{
    var $name;    //宣告第一個成員屬性,用於儲存人的名字
    var $age;      //宣告第一個成員屬性,用於儲存人的年齡
    var $sex;     //宣告第一個成員屬性,用於儲存人的性別
    function say(){   //宣告第一個方法
        echo '人在說話';   //定義人說話的功能
    }
    function run(){   //宣告第二個方法
        echo '人在跑步';   //定義人跑步的功能
    }
    function eat(){   //宣告第三個方法
        echo '人在吃飯';   //定義人吃飯的功能
    }
}
// 範例化物件
$sqyy = new Person();
//成員屬性賦值
$sqyy -> name = "伊川";
$sqyy -> sex = "男";
$sqyy -> age = 26;
//存取物件中的成員方法
$sqyy->eat();

五、特殊的物件參照 "$this"

  上面的範例中,我們是範例化一個物件之後再給成員屬性賦值和存取成員方法的。那麼 $this也可以在成員方法中使用,代表的是當前的這個物件

成員方法呼叫前的物件是誰,$this就代表誰

class Person{
    var $name;   
     function info(){     
        $this ->name = "SQYY";
    }
  }

六、構造方法與解構方法

1、構造方法

  構造方法是物件建立完成後第一個被物件自動呼叫的方法,會初始化這個物件,當使用new關鍵字範例化物件時會自動觸發。

<?php
    class Person{
        //下面是宣告人的成員屬性,都是沒有初始值的,在建立物件時,使用構造方法賦給初始值
        var $name;   //定義人的名字
        var $sex;    //定義人的性別
        var $age;    //定義人的年齡
        
        function __construct($name="SQYY",$sex="男",$age=1){
            $this -> name = $name;  //在建立物件時,使用傳入的引數$name為成員屬性 $this->name賦初值
            $this -> sex = $sex;    //在建立物件時,使用傳入的引數$sex為成員屬性 $this->sex賦初值
            $this -> age = $age;    //在建立物件時,使用傳入的引數$sex為成員屬性 $this->age賦初值
        }
    
        //下面宣告人的成員方法
        function say(){
            echo "我的名字:" .$this ->name. " ,性別:" .$this -> sex ."  年齡" .$this ->age. "。<br>";
        }
    }
    
    $person1 = new Person();                   //建立物件$person1時會自動執行構造方法,預設傳參
    $person2 = new Person('張三');             //建立物件$person2時會自動執行構造方法,傳入第一個引數,其他預設傳參
    $person3 = new Person('李四','男');        //建立物件$person3時會自動執行構造方法,傳入前兩個引數,其他預設傳參
    $person4 = new Person('王五','女','20');   //建立物件$person4時會自動執行構造方法,傳入所有引數
    
    $person1 ->say();
    $person2 ->say();
    $person3 ->say();
    $person4 ->say();
?>

執行結果

php31.png

2、解構方法

  物件在銷毀之前最後一個被物件自動呼叫的方法,先建立 傳入變數後銷毀

<?php 
    header('Content-type:text/html;charset=utf-8');
    // 定義一個汽車的類
    class car{
        // 成員屬性
        public $name;
        public $color;

        //構造方法
        public function __construct($name,$color){
            $this->name = $name;
            $this->color = $color;
            echo "你建立了".$this->name.'<br>';
        }

        // 解構方法
        public function __destruct(){
            echo "你銷毀了".$this->name.'<br>';
        }
    }

    // 範例化物件
    $hanma = new car('悍馬','粉色','H2');
    $bmw = new car('寶馬','紅色','X7');
    $benchi = new car('奔馳','黑色','s600');

    // unset($bmw);
    $bmw = '1111';
 ?>

執行結果

php32.png

如果我們不參照變數,建立完物件之後就會銷毀。

<?php 

    header('Content-type:text/html;charset=utf-8');

    // 定義一個汽車的類
    class car{
        // 成員屬性
        public $name;
        public $color;

        //構造方法
        public function __construct($name,$color){
            $this->name = $name;
            $this->color = $color;
            echo "你建立了".$this->name.'<br>';
        }

        // 解構方法
        public function __destruct(){
            echo "你銷毀了".$this->name.'<br>';
        }
    }

    // 範例化物件
    new car('悍馬','粉色','H2');
    new car('寶馬','紅色','X7');
    new car('奔馳','黑色','s600');

 ?>

執行結果

php33.png

以上就是php類和物件的關係的詳細內容,更多請關注TW511.COM其它相關文章!