为什么私人财产可以在课外访问?

时间:2015-10-27 09:47:07

标签: php oop

所以我有一个包含属性和方法的简单类。我不明白为什么班上的私有财产可以在那个班级之外输出。谁能对此有所了解?我读到私人财产无法在同类之外访问。

为什么我在下一个代码上没有收到错误?

class simpleClass{
    private $property = 'TEST';
        public function show_property(){
          echo $this->property;
        }
}

$my_object = new simpleClass();
$my_object->show_property();

5 个答案:

答案 0 :(得分:2)

属性可能是私有的,但您还创建了一个 public 函数,该函数可以访问该属性。这个函数show_property()是类本身的一部分,实际上可以访问类的私有部分。

你所做的评论显示出对这种情况的轻微误解:

  

我不明白为什么我班级的私有财产可以在该班级之外输出。

你是对的,它不能在课外访问。它只能在 类中访问。但是,通过调用show_property(),您实际上已将移动到该类中(暂时)。

答案 1 :(得分:2)

因为你根本没有从课外访问该属性。

您正在调用show_property()方法,该方法是公开的,因此您可以调用它。 show_property()反过来访问私有财产,但也没关系,因为是来自课外的访问。

拥有私有财产和公共访问者/获取方法正是如此 - 您可以控制如何以及是否可以访问您的私人财产。

答案 2 :(得分:0)

不在外面访问。外表示$ myobject->属性。

答案 3 :(得分:0)

将功能设为私有。

class simpleClass{
    private $property = 'TEST';
        private function show_property(){
          echo $this->property;
        }
}

$my_object = new simpleClass();
$my_object->show_property();

答案 4 :(得分:0)

您的代码正在按照您的要求进行操作。你不访问私有对象$ property。而是访问驻留在类simpleClass中的公共函数show_property()。所以对象$ property仍然是私有的。因为函数和对象都在同一个类中,所以函数可以访问对象。

如果你试图从$ my_object中回显对象,你将无法这样做,因为该对象是私有的。