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.成員屬性的聲明,屬性前必需要有修飾符
修飾符 $變量名[=默認值];
經常使用屬性修飾符:public、protected、private、static、var
2.成員屬性能夠不給默認值
3.成員屬性就是一個變量,其默認值不能夠是另外一個變量名、帶運算符的表達式、方法或函數調用
public $var1=1+2; //錯誤格式
public $var2=self::myStaticMethod(); //錯誤格式
public $var3=$var4; //錯誤格式
4.成員方法的聲明,能夠沒有修飾符,也能夠沒有返回值
[修飾符] function 方法名(參數1,...){
[方法體]
[return 返回值]
}
修飾符:public、protected、private、static、abstract、final
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 被析構啦!