• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何直接访问php实例对象中的private属性详解

    前言

    本文主要介绍了关于如何直接访问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赋值,竟然没有报错!

    解释:因为同一个类的对象即使不是同一个实例也可以互相访问对方的私有与受保护成员。这是由于在这些对象的内部具体实现的细节都是已知的。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • php面向对象中static静态属性和静态方法的调用
    • PHP var_dump遍历对象属性的函数与应用代码
    • php中类和对象:静态属性、静态方法
    • PHP实现在对象之外访问其私有属性private及保护属性protected的方法
    • PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
    • php面向对象中static静态属性与方法的内存位置分析
    • PHP实现删除多重数组对象属性并重新赋值的方法
    • PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
    • PHP 5.0对象模型深度探索之属性和方法
    • PHP获取对象属性的三种方法实例分析
    上一篇:thinkphp中的多表关联查询的实例详解
    下一篇:PHP长网址与短网址的实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    如何直接访问php实例对象中的private属性详解 如何,直接,访问,php,实例,