如何直接訪問php實(shí)例對(duì)象中的private屬性詳解
前言
本文主要介紹了關(guān)于如何直接訪問php實(shí)例對(duì)象中private屬性的相關(guān)內(nèi)容,在介紹關(guān)鍵部分之前,我們先回顧一下php面向?qū)ο蟮脑L問控制。
對(duì)屬性或方法的訪問控制,是通過在前面添加關(guān)鍵字 public(公有),protected(受保護(hù))或 private(私有)來實(shí)現(xiàn)的。被定義為公有的類成員可以在任何地方被訪問。被定義為受保護(hù)的類成員則可以被其自身以及其子類和父類訪問。被定義為私有的類成員則只能被其定義所在的類訪問。
類屬性必須定義為公有,受保護(hù),私有之一。如果用 var 定義,則被視為公有。
請(qǐng)看下面示例代碼(來自官方文檔:http://php.net/manual/en/language.oop5.visibility.php
<?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è)類的實(shí)例對(duì)象訪問一個(gè)類的私有或者受保護(hù)的成員屬性時(shí),會(huì)拋出一個(gè)致命錯(cuò)誤。
下面是文章標(biāo)題要做的事情,訪問php實(shí)例對(duì)象的私有屬性。
按照我們正常的做法,一般都會(huì)是寫一個(gè)public的方法,再返回這個(gè)屬性。
public function getPrivate() { return $this->private; }
事實(shí)是我們本就應(yīng)該這樣做。
下面說是只是特殊場(chǎng)景下的使用方法,平時(shí)寫代碼希望大家不要亂來。
<?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ì)象出來,再給這個(gè)實(shí)例的私有屬性a賦值,竟然沒有報(bào)錯(cuò)!
解釋:因?yàn)橥粋€(gè)類的對(duì)象即使不是同一個(gè)實(shí)例也可以互相訪問對(duì)方的私有與受保護(hù)成員。這是由于在這些對(duì)象的內(nèi)部具體實(shí)現(xiàn)的細(xì)節(jié)都是已知的。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- php面向?qū)ο笾衧tatic靜態(tài)屬性和靜態(tài)方法的調(diào)用
- PHP var_dump遍歷對(duì)象屬性的函數(shù)與應(yīng)用代碼
- php中類和對(duì)象:靜態(tài)屬性、靜態(tài)方法
- PHP實(shí)現(xiàn)在對(duì)象之外訪問其私有屬性private及保護(hù)屬性protected的方法
- PHP動(dòng)態(tài)地創(chuàng)建屬性和方法, 對(duì)象的復(fù)制, 對(duì)象的比較,加載指定的文件,自動(dòng)加載類文件,命名空間
- php面向?qū)ο笾衧tatic靜態(tài)屬性與方法的內(nèi)存位置分析
- PHP實(shí)現(xiàn)刪除多重?cái)?shù)組對(duì)象屬性并重新賦值的方法
- PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記 (二) - 靜態(tài)變量的屬性和方法及延遲綁定
- PHP 5.0對(duì)象模型深度探索之屬性和方法
- PHP獲取對(duì)象屬性的三種方法實(shí)例分析
相關(guān)文章
php實(shí)現(xiàn)簽到功能的方法實(shí)例分析
這篇文章主要介紹了php實(shí)現(xiàn)簽到功能的方法,結(jié)合實(shí)例形式分析了php基于數(shù)據(jù)庫及時(shí)間判斷操作實(shí)現(xiàn)簽到功能的相關(guān)技巧,需要的朋友可以參考下2017-12-12php利用iframe實(shí)現(xiàn)無刷新文件上傳功能的代碼
上傳原理很簡(jiǎn)單就是利用表單的打開方式為iframe的id名,這樣就可以在當(dāng)前頁面的iframe打來了,實(shí)現(xiàn)文件上傳,再利用js返回上傳結(jié)果。2011-09-09Mysql數(shù)據(jù)庫操作類( 1127版,提供源碼下載 )
Mysql數(shù)據(jù)庫操作類,學(xué)習(xí)php的朋友可以參考下。2010-12-12解析PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)
本篇文章是對(duì)PHP中數(shù)組元素升序、降序以及重新排序的函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06