成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 如何直接訪問php實例對象中的private屬性詳解
全站頭部文字 我要出現在這里
如何直接訪問php實例對象中的private屬性詳解 741 2023-12-08   

前言

本文主要介紹了關于如何直接訪問php實例對象中private屬性的相關內容,在介紹關鍵部分之前,我們先回顧一下php面向對象的訪問控制。

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

類屬性必須定義為公有,受保護,私有之一。如果用 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

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

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

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

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

事實是我們本就應該這樣做。

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

<?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賦值,竟然沒有報錯!

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對綠夏網的支持。



主站蜘蛛池模板: 越活越来劲 电视剧| 爱爱内含光在线播放| 三人行菲律宾| 春江花月夜理解性默写及答案| 色在线视频观看| dota2反和谐| 虞书欣新剧永夜星河免费观看| 飞龙猛将演员表| 流行歌简谱| 彭丹 孽欲追击档案之邪杀| 想想办法吧爸爸| 白蛇三| 陈奂生上城| 陈宝莲徐锦江夜半2普通话| 单位同意报考证明| 非常外父| 荒笛子简谱| 刘天宇| 大尺度床戏韩国| 出彩中国人撒贝宁精忠报国15分钟| 六一儿童节幕后换演出服| 科特·柯本| 步步惊心剧照| 大奉打更人电视剧在线播放视频| 国内性爱视频| 欧美视频亚洲视频| 暮光之城1高清完整版| 熊出没之过年大电影| 抖音网页入口| 高岛真一| 水怪电影| 安达充| 挤黑头挤痘痘视频最猛| 嫂子的职业韩| 搜狐视频官网| 电影白夜行| 木偶人| 萝莉时间| av888av| 韩寒| 我会读心术免费观看完整版|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103