国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 > php教程 > php手冊 > 正文

php面向?qū)ο笾?封裝性

php中文網(wǎng)
發(fā)布: 2016-12-05 13:26:27
原創(chuàng)
1400人瀏覽過

1.封裝:

具體概念講出來,感覺也不知道說的是什么.其實就是

在類的成員屬性和成員方法前面,加上類似public protected private 的修飾符

目的:盡量地隱藏對象的內(nèi)部細節(jié),達到訪問控制.[不是拒絕訪問]. (對外形成一個屏障,只保留有限的對外接口與外部發(fā)生聯(lián)系.)

2.封裝的原則:

對象對外的部分不能夠隨意存取對象的內(nèi)部數(shù)據(jù)(成員屬性和成員方法),從而有效地避免了外部錯誤對它的"交叉感染",使軟件錯誤能夠局部化,大大減小查錯和排錯的難度.

立即學習PHP免費學習筆記(深入)”;

3.修飾符public?protected private

public :公有的,默認的 ?protected ?:受保護的 private :私有的

4.訪問范圍


是否可以訪問對應的屬性和方法

?

? ? ? ? ?public ? ? ? protected ? ? ? private
類的外部 ? ? ? ? ? √ ? ? ? ? ? ?× ? ? ? ? ? ?×
類的內(nèi)部 ? ? ? ? ? √ ? ? ? ? ? √ ? ? ? ? ? √

?

?

?

?

?

①類的外部只有公有屬性和方法才可以訪問.

②其他屬性和方法可以在類的內(nèi)部聲明公有方法間接地進行訪問.

③在類的內(nèi)部可以訪問公有,私有,受保護的屬性和方法.

④在類的內(nèi)部不可以訪問私有和受保護的屬性和方法.

如果成員方法沒有任何訪問控制符,默認是public的,在任何地方都可以訪問.(在對象外部就可以公有方法作為訪問接口,間接地訪問對象的內(nèi)部細節(jié)).

5.關(guān)于封裝中的幾個常用魔術(shù)方法__set(),__get(),__isset(),__unset()

引出這幾個魔術(shù)方法,首先要說一下,構(gòu)造方法__construct()沒有加關(guān)鍵字修飾,是公有方法(構(gòu)造方法不要設(shè)置成私有的權(quán)限)用戶可以使用構(gòu)造方法在實例化對象后為私有屬性賦初始值.

但是,我們已經(jīng)實例化對象,在程序運行過程中想要對私有屬性進行賦值操作.有兩種方法

(1).在類的內(nèi)部設(shè)置公有方法,專門來提供賦值,取值接口

?

class Person{
    private $name="紫藤";
    
    public function __construct(){
        echo $this->name;
    }    
    
    //賦值方法
     public function setvalue($name){
           $this->name=$name;          
     }
      public function getvalue(){
           echo $this->name;       
     }
}

//實例化
$mod = new Person();
登錄后復制

?

結(jié)果是: ?紫藤

$mod->setvalue('寶強');
$mod->getvalue();
登錄后復制

結(jié)果是:寶強

(2)魔術(shù)方法__set(),__get(),__isset(),__unset()

如果像上面的每次都要去設(shè)置公有方法,很繁瑣.在php5.1.0之后的版本中,預定義了__set(),__get(),用來完成對所有非公有屬性都能獲取和復制的操作.

__set($propertyName,$propertyValue)

有兩個參數(shù), 屬性名 ?和 ? 屬性值,在給非公有屬性賦值時,會自動調(diào)用此方法(就是說在類中必須聲明__set()) ? (代碼后面補充)

__get($propertyName)在獲取非公有屬性的值時,會自動調(diào)用此方法.

?

檢測非公有屬性是否存在__isset(),刪除一個對象的非公有屬性__unset().為了防止用戶主動調(diào)用這兩個方法,要使用private關(guān)鍵字封裝在對象中.

__isset($propertyName)檢測非公有屬性是否存.(這是一個輔助檢測函數(shù),沒有檢測功能),還要在外部調(diào)用isset()函數(shù)時,才會自動調(diào)用此方法.

__unset($propertyName)刪除一個對象的非公有屬性_,要在外部調(diào)用unset()函數(shù)時,才會自動調(diào)用此方法.

?

PHP速學教程(入門到精通)
PHP速學教程(入門到精通)

PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關(guān)注服務號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號