php实例对象中的private属性如何直接访问?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php实例对象中的private属性如何直接访问?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1936字,纯文字阅读大概需要3分钟。
内容图文
这篇文章主要给大家介绍了关于如何直接访问php实例对象中private属性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。前言
本文主要介绍了关于如何直接访问php实例对象中private属性的相关内容,在介绍关键部分之前,我们先回顾一下php面向对象的访问控制。
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。
类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。
请看下面示例代码(来自官方文档:http://php.com/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赋值,竟然没有报错!
解释:因为同一个类的对象即使不是同一个实例也可以互相访问对方的私有与受保护成员。这是由于在这些对象的内部具体实现的细节都是已知的。
总结
以上就是php实例对象中的private属性如何直接访问?的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的php实例对象中的private属性如何直接访问?全部内容,希望文章能够帮你解决php实例对象中的private属性如何直接访问?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。