7.3.1 PHP實例化對象
當(dāng)定義好類后,我們使用new關(guān)鍵字來生成一個對象。
$對象名稱 = new 類名稱();
$對象名稱 = new 類名稱([參數(shù)列表]);
由于對象資料封裝的特性,對象屬性(類中定義的變量)是無法由主程序區(qū)塊直接來訪問的,必須通過對象來調(diào)用類中所定義的屬性和行為函數(shù),間接地達(dá)成存取控制類中資料的目的。
<?php
//聲明一個電話類Phone
class Phone {
//類中成員同上(略)
}
// 聲明一個人類Person
class Person {
//類中成員同上(略)
}
//通過Person類實例化三個對象$person1、$person2、$person3
$person1 = new Person(); //創(chuàng)建第一個Person類對象,引用名為$person1
$person2 = new Person(); //創(chuàng)建第二個Person類對象,引用名為$person2
$person3 = new Person(); //創(chuàng)建第三個Person類對象,引用名為$person3
//通過Phone類實例化三個對象$phone1、$phone2、$phone3
$phone1 = new Phone(); //創(chuàng)建第一個Phone類對象,引用名為$phone1
$phone2 = new Phone(); //創(chuàng)建第二個Phone類對象,引用名為$phone2
$phone3 = new Phone(); //創(chuàng)建第三個Phone類對象,引用名為$phone3
對象中成員的訪問
類中包含成員屬性與成員方法兩個部分,我們可以使用“new”關(guān)鍵字來創(chuàng)建一個對象,即:
$引用名 = new
類名(構(gòu)造參數(shù));那么我們可以使用特殊運算符“->”來訪問對象中的成員屬性或成員方法。如:
$引用名 = new 類名(構(gòu)造參數(shù));
$引用名->成員屬性=賦值; //對象屬性賦值
echo $引用名->成員屬性; //輸出對象的屬性
$引用名->成員方法(參數(shù));//調(diào)用對象的方法
如果對象中的成員不是靜態(tài)的,那么這是唯一的訪問方式。
對象和類的關(guān)系:
對象是實際存在的,占有動態(tài)資源。
類是對象的藍(lán)圖,可能占有靜態(tài)資源。
對象屬性占有動態(tài)資源
類(靜態(tài))屬性實際上是有類名字空間上的“全局變量”
性能考慮:
每個對象要單獨占用數(shù)據(jù)空間
增加的調(diào)用層次可能消耗執(zhí)行時間
boyfriend.class.php
<?php
/*
* 屬性
* 性別:男
* 年齡: 24
* 身高: 175cm
* 眼睛: 大
*
*
* 行為
*
* 做飯
* 做家務(wù)
*
* class 類名 {
*
*
* }
*
* 注意: 在類的成員屬性前面一定要有一個修飾詞, 如果不知道使用什么修飾詞, 就可以使用var (關(guān)鍵字), 如果一旦有其它的修飾詞就不要有var
*
*/
class BoyFriend {
//變量 (成員屬性)
var $name = "gaoluofeng";
var $age = 24;
var $sex = "男";
var $height = "175cm";
var $eye = "big";
//函數(shù) (成員方法)
public function doFan($rou, $cai) {
return "做飯的功能<br>";
}
function doJW() {
return "做家務(wù)的功能<br>";
}
}
$bf1 = new BoyFriend();
$bf1 -> name = "張三";
$bf2 = new BoyFriend;
$bf2 -> name = "李四";
echo $bf1->sex."<br>";
echo $bf2->height."<br>";
echo $bf1 -> dofan("牛肉", "土豆");
echo $bf2 -> dojw();
test.php
<?php
include "boyfriend.class.php";