佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 如何直接訪問php實例對象中的private屬性詳解

如何直接訪問php實例對象中的private屬性詳解

熱門標(biāo)簽:服務(wù)器配置 Mysql連接數(shù)設(shè)置 Linux服務(wù)器 銀行業(yè)務(wù) 阿里云 團購網(wǎng)站 電子圍欄 科大訊飛語音識別系統(tǒng)

前言

本文主要介紹了關(guān)于如何直接訪問php實例對象中private屬性的相關(guān)內(nèi)容,在介紹關(guān)鍵部分之前,我們先回顧一下php面向?qū)ο蟮脑L問控制。

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

類屬性必須定義為公有,受保護,私有之一。如果用 var 定義,則被視為公有。

請看下面示例代碼(來自官方文檔: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

如上面代碼所示,我們用一個類的實例對象訪問一個類的私有或者受保護的成員屬性時,會拋出一個致命錯誤。

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

按照我們正常的做法,一般都會是寫一個public的方法,再返回這個屬性。

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

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

下面說是只是特殊場景下的使用方法,平時寫代碼希望大家不要亂來。

?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了一個新的A對象出來,再給這個實例的私有屬性a賦值,竟然沒有報錯!

解釋:因為同一個類的對象即使不是同一個實例也可以互相訪問對方的私有與受保護成員。這是由于在這些對象的內(nèi)部具體實現(xiàn)的細(xì)節(jié)都是已知的。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • php面向?qū)ο笾衧tatic靜態(tài)屬性和靜態(tài)方法的調(diào)用
  • PHP var_dump遍歷對象屬性的函數(shù)與應(yīng)用代碼
  • php中類和對象:靜態(tài)屬性、靜態(tài)方法
  • PHP實現(xiàn)在對象之外訪問其私有屬性private及保護屬性protected的方法
  • PHP動態(tài)地創(chuàng)建屬性和方法, 對象的復(fù)制, 對象的比較,加載指定的文件,自動加載類文件,命名空間
  • php面向?qū)ο笾衧tatic靜態(tài)屬性與方法的內(nèi)存位置分析
  • PHP實現(xiàn)刪除多重數(shù)組對象屬性并重新賦值的方法
  • PHP 面向?qū)ο蟪绦蛟O(shè)計(oop)學(xué)習(xí)筆記 (二) - 靜態(tài)變量的屬性和方法及延遲綁定
  • PHP 5.0對象模型深度探索之屬性和方法
  • PHP獲取對象屬性的三種方法實例分析

標(biāo)簽:棗莊 廣元 大理 衢州 萍鄉(xiāng) 蚌埠 江蘇 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何直接訪問php實例對象中的private屬性詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    朝阳县| 启东市| 广南县| 克拉玛依市| 邵武市| 吉水县| 淳安县| 缙云县| 晋中市| 阿瓦提县| 朔州市| 武胜县| 丹东市| 丽江市| 壤塘县| 甘谷县| 西安市| 林西县| 弋阳县| 中牟县| 德格县| 鹤庆县| 龙门县| 临沧市| 大荔县| 中江县| 自贡市| 莆田市| 鄂尔多斯市| 离岛区| 锦屏县| 新丰县| 深泽县| 洛隆县| 莒南县| 合川市| 太和县| 庄浪县| 长岭县| 廉江市| 双流县|