一渠啊、面向?qū)ο笏枷耄?br> php、java权旷、OC等都是支持面向?qū)ο缶幊痰奶骝取n愂浅橄蟮模瑢?duì)象是具體的拄氯,比如:你娶了個(gè)老婆叫l(wèi)izzy躲查,老婆是類,lizzy是對(duì)象译柏。因?yàn)槔掀攀且活惾肆椭螅鴏izzy是具體的某一個(gè)。
二鄙麦、成員屬性:
1典唇、成員屬性是從某個(gè)事物提取出來的,他可以是基本數(shù)據(jù)類型(整數(shù)胯府、小數(shù)介衔、字符....),也可以是復(fù)合數(shù)據(jù)類型(數(shù)組骂因、新的對(duì)象....)炎咖;
創(chuàng)建對(duì)象:
$對(duì)象名 = new 類名();
$對(duì)象名 = new 類名;
這兩種方法創(chuàng)建都可以。
定義成員屬性并賦值:
$對(duì)象名 -> 屬性名 = "具體屬性";
<?php
//創(chuàng)建貓這個(gè)類
Class Cat {
public $name;
public $age;
public $color;
}
//創(chuàng)建貓對(duì)象
$cat1 = new Cat();
$cat2 = new Cat();
//給貓屬性賦值
$cat1 -> name = "小白";
$cat1 -> age = 3;
$cat1 -> color = "白色";
$cat2 -> name = "小花";
$cat2 -> age = 100;
$cat2 -> color = "花色";
$searchCatName = "小白";
if ($cat1 -> name = $searchCatName) {
echo $cat1->name."<br/>".$cat1->age."<br/>".$cat1->color;
}
?>
二侣签、命名規(guī)范:
如果一個(gè)文件專門用于定義類塘装,則命名: 類名.class.php。
三影所、內(nèi)存原理圖:
四蹦肴、如果給函數(shù)傳遞的是基本數(shù)據(jù)類型,在默認(rèn)情況下是傳遞的值猴娩,如果希望傳入地址阴幌,則應(yīng)該才傳入的參數(shù)那加入&。
<?php
//給一個(gè)函數(shù)傳遞基本數(shù)據(jù)類型
$a = 90;
$b = 90.6;
$c = true;
$d = "hello";
function test(&$a,$b,$c,$d) {
$a = 78;
$b = 89.2;
$c = false;
$d = "changsha";
}
test($a,$b,$c,$d);
echo $a."<br/>".$b."<br/>".$c."<br/>".$d."<br/>";
?>
在php中如果給一個(gè)函數(shù)傳遞的是數(shù)組卷中,則默認(rèn)情況下是傳值(拷貝了新的數(shù)組)矛双,如果希望傳入地址,則應(yīng)加入:&$數(shù)組名蟆豫。
五议忽、成員方法:
函數(shù)和成員方法關(guān)系:
當(dāng)我們把一個(gè)函數(shù)寫到某個(gè)類中,則該函數(shù)可以稱成員方法十减。
<?php
Class Person {
public $name;
public $age;
public function speak() {
echo "<br/>我是一個(gè)成員方法";
}
public function doCount($n) {
$sum = 0;
for ($i=0; $i < $n; $i++) {
$sum+=$i;
}
return $sum;
}
}
$p1 = new Person();
// $p1 -> speak();//通過對(duì)象調(diào)用成員方法,機(jī)制和調(diào)用普通函數(shù)一樣
for ($i=0; $i < 5; $i++) {
$p1 -> speak();
}
$sum = $p1 -> doCount(100);
echo "<br/>1到n的計(jì)算結(jié)果是:".$sum;
?>
六栈幸、構(gòu)造方法:
構(gòu)造方法是leukemia的一種特殊的方法愤估,主要作用是完成對(duì)新對(duì)象的初始化。有如下特點(diǎn):
1速址、沒有返回值玩焰;
2、在創(chuàng)建一個(gè)類的新對(duì)象時(shí)芍锚,系統(tǒng)會(huì)自動(dòng)的調(diào)用該類的構(gòu)造方法完成對(duì)新對(duì)象的初始化昔园。
php5中一個(gè)類可以同時(shí)又兩種形式的構(gòu)造方法,__construct() 和php4里的:方法名和類名相同并炮。如果兩者同時(shí)存在默刚,只有__construct() 有效。盡量避免使用后者渣触。
系統(tǒng)會(huì)給每個(gè)對(duì)象分配this羡棵,代表當(dāng)前對(duì)象的地址壹若;呢哪個(gè)對(duì)象使用到this嗅钻,就是哪個(gè)對(duì)象地址。this不能外部使用店展。
<?php
Class Person {
public $name;
public $age;
public function __construct($inputName,$inputAge) {
echo "我是構(gòu)造方法";
$this -> name = $inputName;
$this -> age = $inputAge;
}
//這是php4中的構(gòu)造方法养篓,方法名和類名相同
public function Person() {
echo "我是php4中的構(gòu)造方法";
}
}
$p1 = new Person("zxm", 24);
echo "<br/>調(diào)用構(gòu)造方法后結(jié)果:".$p1->name;
?>
構(gòu)造方法注意事項(xiàng):
1、一旦自定義了一個(gè)構(gòu)造函數(shù)赂蕴,默認(rèn)的構(gòu)造函數(shù)就被覆蓋了柳弄,這時(shí)在創(chuàng)建對(duì)象的時(shí)候就要使用自定義的構(gòu)造函數(shù)。
2概说、一個(gè)類只能有一個(gè)構(gòu)造函數(shù)(不能重載)碧注。
七、析構(gòu)方法:
析構(gòu)方法主要用于釋放資源(數(shù)據(jù)庫鏈接糖赔、圖片資源...銷毀某個(gè)對(duì)象)
<?php
class Person {
public $name;
public $age;
//構(gòu)造方法
public function __construct($name, $age) {
$this -> name = $name;
$this -> age = $age;
//打開一個(gè)$conn鏈接數(shù)據(jù)庫的資源萍丐,需要及時(shí)關(guān)閉銷毀
}
//寫一個(gè)析構(gòu)方法
function __destruct() {
echo $this->name."銷毀資源,及時(shí)關(guān)閉數(shù)據(jù)庫<br/>";
}
}
$p1 = new Person("zxm", 25);
$p1 = new Person("lizzy",24);
?>
析構(gòu)方法特點(diǎn):
1放典、析構(gòu)方法會(huì)自動(dòng)調(diào)用逝变;
2、析構(gòu)方法主要用于銷毀資源奋构、但不是銷毀對(duì)象壳影;
3、析構(gòu)方法調(diào)用順序是:先創(chuàng)建的對(duì)象后被銷毀弥臼;
4宴咧、析構(gòu)方法什么時(shí)候被調(diào)用:
(1)當(dāng)程序(進(jìn)程結(jié)束)退出時(shí);
(2)當(dāng)一個(gè)對(duì)象成為垃圾對(duì)象的時(shí)候径缅,該對(duì)象的析構(gòu)方法也會(huì)被調(diào)用(垃圾對(duì)象:沒有任何變量再引用它)掺栅;
(3)一旦一個(gè)對(duì)象成為垃圾對(duì)象箱吕,析構(gòu)方法就會(huì)立即調(diào)用。