php中的private屬性怎么直接訪問(wèn)

php中的private屬性怎么直接訪問(wèn)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

曲周網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

在介紹關(guān)鍵部分之前,我們先回顧一下php面向?qū)ο蟮脑L問(wèn)控制。

對(duì)屬性或方法的訪問(wèn)控制,是通過(guò)在前面添加關(guān)鍵字 public(公有),protected(受保護(hù))或 private(私有)來(lái)實(shí)現(xiàn)的。被定義為公有的類(lèi)成員可以在任何地方被訪問(wèn)。被定義為受保護(hù)的類(lèi)成員則可以被其自身以及其子類(lèi)和父類(lèi)訪問(wèn)。被定義為私有的類(lèi)成員則只能被其定義所在的類(lèi)訪問(wèn)。

類(lèi)屬性必須定義為公有,受保護(hù),私有之一。如果用 var 定義,則被視為公有。

請(qǐng)看下面示例代碼(來(lái)自官方文檔 http://php.net/manual/en/lang...:

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private

如上面代碼所示,我們用一個(gè)類(lèi)的實(shí)例對(duì)象訪問(wèn)一個(gè)類(lèi)的私有或者受保護(hù)的成員屬性時(shí),會(huì)拋出一個(gè)致命錯(cuò)誤。

下面是文章標(biāo)題要做的事情,訪問(wèn)php實(shí)例對(duì)象的私有屬性。

按照我們正常的做法,一般都會(huì)是寫(xiě)一個(gè)public的方法,再返回這個(gè)屬性。

public function getPrivate()
{
    return $this->private;
}

事實(shí)是我們本就應(yīng)該這樣做。

下面說(shuō)是只是特殊場(chǎng)景下的使用方法,平時(shí)寫(xiě)代碼希望大家不要亂來(lái)。

<?php
class A {
    private $a = 'self';
    public function test() {
        $other = new self();
        $other->a = 'other';
        var_dump($other->a);
    }
}
$aa = new A();
$aa->test();

如上代碼所示,我們new了一個(gè)新的A對(duì)象出來(lái),再給這個(gè)實(shí)例的私有屬性a賦值,竟然沒(méi)有報(bào)錯(cuò)!

解釋?zhuān)阂驗(yàn)橥粋€(gè)類(lèi)的對(duì)象即使不是同一個(gè)實(shí)例也可以互相訪問(wèn)對(duì)方的私有與受保護(hù)成員。這是由于在這些對(duì)象的內(nèi)部具體實(shí)現(xiàn)的細(xì)節(jié)都是已知的。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

名稱(chēng)欄目:php中的private屬性怎么直接訪問(wèn)
文章鏈接:http://muchs.cn/article32/ghjesc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名企業(yè)建站、企業(yè)網(wǎng)站制作標(biāo)簽優(yōu)化、虛擬主機(jī)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)