如何直接访问php实例对象的private属性-php教程

资源魔 33 0
正在引见要害局部以前,咱们先回顾一下php面向工具的拜访管制。

对属性或办法的拜访管制,是经过正在后面增加要害字 public(私有),protected(受维护)或 private(公有)来完成的。被界说为私有的类成员能够正在任何中央被拜访。被界说为受维护的类成员则能够被其本身和其子类以及父类拜访。被界说为公有的类成员则只能被其界说所正在的类拜访。

类属性必需界说为私有,受维护,公有之一。假如用 var 界说,则被视为私有。

请看上面示例代码(来自民间文档 http://php.net/manual/en/lang...:

<?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属性的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!