PHP 物件導向程式設計之封裝性

2021-09-24 13:12:33 字數 3397 閱讀 5432

設定私有成員

# 例項:

# 我們已定義了乙個封裝,這個封裝是私有的成員屬性和私有的成員方法

class person

}

# 例項:

class person

}

例項:person.class.php

<?php

class

person

// 受保護的成員方法,不能在類的外部直接訪問

protected

function

getage()

// 公有的成員方法,可以在類的外部直接訪問

public

function

getgender()

// 私有的,公有的,受保護的成員方法都可以在類的內部直接訪問

public

function

say()}

$person

=new

person()

;echo

$person

-> name;

// 公有的是可以在類的外部直接訪問

echo"";

//echo $person -> age; // 私有的是不能在類的外部直接訪問

echo"";

//echo $person -> gender; // 受保護的也是不能在類的外部直接訪問

//$person -> getname();

//$person -> getage();

//echo $person -> getgender();

echo

$person

->

say(

);

例項:person.class.php

<?php

class

person

// 魔術方法 __set() 是在給私有的或受保護的成員屬性在類的外部直接賦值時被**自動呼叫**

// 第乙個引數:要賦值的成員屬性名

// 第二個引數:要賦的值

// 作用:可以更好的對程式進行流程控制

public

function

__set

($name

,$value

)else}}

$person

=new

person()

;// $person -> set("name", "zhangsan");

// $person -> set("age", 18);

// var_dump($person);

$person

-> name =

"lisi"

;$person

-> age =31;

var_dump

($person

);

例項:person.class.php

<?php

class

person

public

function

get(

$name

)// 魔術方法 __get() 是在類的外部直接得到私有的或受保護的成員屬性時被自動呼叫

// 引數:要訪問的成員屬性名

// 作用:可以得到私有的或受保護的成員屬性。也可以對返回的結果進製控制

public

function

__get

($name)}

$person

=new

person

("zhangsan",20

);// echo $person -> age;

// echo $person -> get("name");

// echo "";

// echo $person -> get("age");

echo

$person

-> name;

echo"";

echo

$person

-> age;

例項:person.class.php

<?php

class

person

public

function

is_set

($name

)// 魔術方法 __isset() 是在類的外部用函式 isset() 判斷私有的或受保護的成員屬性時被自動呼叫

// 引數:判斷的成員屬性名

// 作用:可以按需求去返回 false 或 true

public

function

__isset

($name)}

$person

=new

person

("zhangsan",20

);var_dump

(isset

($person

-> name));

var_dump

(isset

($person

-> age));

//var_dump

($person

->

is_set

("name"))

;var_dump

($person

->

is_set

("age"))

;

例項:person.class.php

<?php

class

person

public

function

un_set

($name

)// 魔術方法 __unset() 是在類的外部用函式 unset()釋放私有的或受保護的成員屬性時被自動呼叫

// 引數:要釋放的成員屬性名

// 作用:可以按需求控制成員屬性的釋放操作

public

function

__unset

($name)}

$person

=new

person

("zhangsan",20

);unset

($person

-> name)

;unset

($person

-> age)

;// $person -> un_set("name");

// $person -> un_set("age");

var_dump

($person

);

PHP 物件導向程式設計之繼承性

可以有多層繼承,即乙個類可以繼承某乙個類的子類,如類 b 繼承了類 a,類c 又繼承了類 b,那麼類 c 也間接繼承了類 a。class a class b extends a php是單繼承,乙個類只能有乙個父類 乙個類可以有多個子類 支援多層繼承 classa class bextends ac...

物件導向封裝性

封裝性 強調隱藏物件的屬性和實現細節,僅對外保持公式訪問方式 原則 將不需要對外提供的內容都隱藏起來 把物件的屬性隱藏,提供公共方法對其訪問 實現方式 一般呢將類中的成員變數私有化 private 通過對外部提供set get 方法 開啟eclipse,右擊找到source,在source列表找ge...

PHP中物件導向程式設計之封裝以及魔術方法的使用

物件導向程式設計之方法的封裝 1.類中定義的方法如果加上private修飾詞封裝後就不能被外部物件直接訪問,但是可以被這個物件中未封裝的 其他成員屬性和方法使用 2.一般類中有很多方法是為了類中某乙個特定的某個方法服務的並且也不希望外部物件直接訪問到,所以就需要 將那些不需要外部了解的方法加以封裝 ...