基礎知識

1、面向對象編程

  一、面向對象的學習函數

    1)語法的學習學習

      OOP(面向對象的編程)this

    2)思想的學習spa

      OOA(面向對象的分析)設計

      OOD(面向對象的設計)code

  二、什麼是面向對象對象

    1)操做對象blog

    2)從程序的執行者變成了程序的管理者繼承

  三、什麼是對象

    1)萬物皆對象

    2)實實在在的一個獨立個體

  四、面向對象的目標

    1)解決面向過程的缺陷(包括:代碼冗餘較大、不利於協同開發、開發效率極低、代碼維護困難、程序的擴展性差)

    2)達到高可擴展性、高可重用性、高靈活性、高內聚(內部聯繫)、低耦合(外部聯繫)

  五、面向對象的特色

    封裝、繼承、多態

  六、對象的組成

    1)成員屬性(描述)

    2)成員方法(功能、行爲)

2、類

  一、什麼是類

    類是具備相同屬性和相同行爲的對象的一類總稱

  二、類和對象的關係

    1)先有類,再有對象

    2)類是用來描述對象的

    3)類是對象的抽象化

    4)對象是類的實例化

  三、類的組成部分

    成員屬性(一個成員屬性就是一個變量)

    成員方法(一個成員方法就是一個函數)

  四、如何聲明一個類

    1)簡單格式:

      class 類名{

        [成員屬性]  //也叫成員變量

        [成員方法]  //也叫成員函數

      }

    2)完整格式:

      class 類名 [extends 父類] [implements 接口1[,接口2...]]{

        [成員屬性]

        [成員方法]

      }

    類的聲明須要注意的:

      1.成員屬性的聲明,屬性前必需要有修飾符

        修飾符 $變量名[=默認值];

        經常使用屬性修飾符:publicprotectedprivatestaticvar

      2.成員屬性能夠不給默認值

      3.成員屬性就是一個變量,其默認值不能夠是另外一個變量名、帶運算符的表達式、方法或函數調用

        public $var1=1+2;  //錯誤格式

        public $var2=self::myStaticMethod();  //錯誤格式

        public $var3=$var4;  //錯誤格式

      4.成員方法的聲明,能夠沒有修飾符,也能夠沒有返回值

        [修飾符] function 方法名(參數1,...){

          [方法體]

          [return 返回值]

        }

        修飾符:publicprotectedprivatestaticabstractfinal

      5.成員方法就是一個函數,必須和對象相關不能是一些無心義的操做

3、經過類實例化對象

  一、對象的實例化

    1)須要經過類來進行實例化對象:

      $對象名稱=new 類名稱();

      $對象名稱=new 類名稱([參數1,...]);

    2)成員屬性和成員方法都必須藉由該對象來進行訪問、調用

    3)對象的訪問須使用 -> 來訪問

    4)類的名稱不區分大小寫

    5)類能夠在任意位置調用

      例:     

    class Person{
        //[成員屬性]
        //姓名
        var $name;
        //性別
        var $sex;
        //年齡
        var $age;

        //[成員方法]
        //吃飯
        function eat(){
            echo "愛吃肉";
        }
        //睡覺
        function sleeep(){
            echo "愛睡懶覺";
        }
        //說話
        function speak(){
            echo "不愛BB";
        }

    }


    $person=new Person;
    $person->name="autumn";
    $person->sex="X";
    $person->age=25;

    echo "<pre>";
    var_dump($person);
    echo "</pre>";

    echo $person->name.$person->sex.$person->age.$person->eat().$person->sleeep().$person->speak();
object(Person)#1 (3) {
  ["name"]=>
  string(6) "autumn"
  ["sex"]=>
  string(1) "X"
  ["age"]=>
  int(25)
}

愛吃肉愛睡懶覺不愛BBautumnX25

  二、$this 關鍵字

    1)$this就表明本對象

    2)$this只能在類的內部去使用

    3)$this能夠在類中調用本對象本身的成員屬性和成員方法

    4)在類的內部的多個成員方法中利用「return $this;」便可實現鏈式操做

      例1:

class Person{
    //[成員屬性]
    //姓名
    var $name;
    //性別
    var $sex;
    //年齡
    var $age;

    //[成員方法]
    function info(){
        echo "姓名:".$this->name."性別:".$this->sex."年齡:".$this->age;
    }
}


$p1=new Person;
$p1->name="admin1";
$p1->sex="男";
$p1->age=20;
$p1->info();

echo "<hr>";

$p2=new Person;
$p2->name="admin2";
$p2->sex="女";
$p2->age=25;
$p2->info();

echo "<hr>";

$p3=new Person;
$p3->name="admin3";
$p3->sex="男";
$p3->age=30;
$p3->info();

姓名:admin1性別:男年齡:20


姓名:admin2性別:女年齡:25


姓名:admin3性別:男年齡:30

      例2:  

class Person{
    //[成員屬性]
    //姓名
    var $name;
    //性別
    var $sex;
    //年齡
    var $age;

    //[成員方法]
    function eat(){
        echo "吃晚飯";
        return $this;
    }
    function speak(){
        echo "不愛BB";
        return $this;
    }
    function sleeep(){
        echo "上牀睡覺";
        return $this;
    }
    function offlights(){
        echo "關燈";
        $this->speak();
    }
}

$person=new Person;

$person->eat()->speak()->sleeep()->offlights();

吃晚飯不愛BB上牀睡覺關燈不愛BB

  三、構造方法

    方法一:

      方法名稱與類名稱相同的方法,PHP4及如下版本僅支持此方法:

      class 類名{

        [成員屬性]

        [成員方法]

        function 與類名相同([參數1,...]){

        }

      }

    方法二:

      __construct 替代方法名稱,PHP5及以上版本新增,系統會默認優先選擇此方法,推薦使用

      class 類名{

        [成員屬性]

        [成員方法]

        function __construct([參數1,...]){

        }

      }

    參數:不定

    觸發時機:當對象new實例化的一瞬間自動調用這個方法

    做用:對成員進行初始化操做

    例:

class Person{
    //[成員屬性]
    //姓名
    var $name;
    //性別
    var $sex;
    //年齡
    var $age;

    //[成員方法]
    //PHP4及如下版本支持
    function Person($name,$sex,$age){
        $this->name=$name;  //對成員屬性$name進行賦值
        $this->sex=$sex;  //對成員屬性$sex進行賦值
        $this->age=$age;  //對成員屬性$age進行賦值
        echo "姓名:".$this->name.";性別:".$this->sex.";年齡:".$this->age.";";
    }

    //PHP5及以上版本支持,系統默認優先選擇此方法
    function __construct($name,$sex,$age){
        $this->name=$name;  //對成員屬性$name進行賦值
        $this->sex=$sex;  //對成員屬性$sex進行賦值
        $this->age=$age;  //對成員屬性$age進行賦值
        echo "姓名:".$this->name.";性別:".$this->sex.";年齡:".$this->age.";";
    }
}

$person=new Person("autumn","男",25);

  四、析構方法

    方法:__destruct 替代方法名稱

      class 類名{

        [成員屬性]

        [成員方法]

        function __destruct(){

        }

      }

    參數:無

    觸發時機:當對象銷燬的一瞬間自動調用析構方法

    做用:作程序的後續操做,如關閉文件、釋放結果集等

    例: 

class Person{
    //[成員屬性]
    //姓名
    var $name;
    //性別
    var $sex;
    //年齡
    var $age;

    //[成員方法]
    function __construct($name,$sex,$age){
        $this->name=$name;  //對成員屬性$name進行賦值
        $this->sex=$sex;  //對成員屬性$sex進行賦值
        $this->age=$age;  //對成員屬性$age進行賦值
        echo "姓名:".$this->name.";性別:".$this->sex.";年齡:".$this->age.";";
    }

    //在對象被銷燬的一瞬間自動調用析構方法
    function __destruct(){
        echo $this->name." 被析構啦!<br>";
    }
}

//先實例化的對象,其對應的保存變量在棧中先入棧,銷燬時後入棧的先銷燬
//對應的,後實例化對象先調用析構
$p1=new Person("admin01","男",20);
echo "<br>";
$p2=new Person("admin02","女",25);
echo "<br>";
$p3=new Person("admin03","男",30);
echo "<br>";

姓名:admin01;性別:男;年齡:20;姓名:admin02;性別:女;年齡:25;姓名:admin03;性別:男;年齡:30;admin03 被析構啦!admin02 被析構啦!admin01 被析構啦!

相關文章
相關標籤/搜索