За последние 24 часа нас посетили 17805 программистов и 1689 роботов. Сейчас ищут 1089 программистов ...

privite свойство меняется другим объектом-почему (+пример)

Тема в разделе "PHP для новичков", создана пользователем php_user, 19 окт 2014.

  1. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Почему несмотря на то, что переменная объявлена защищенной, она может меняться другим экземпляром класса?
    Код (PHP):
    1. class myClass {
    2.   protected $a=1;
    3.   
    4.   public function changeValue($obj) {
    5.       $obj->a = 2;
    6.   }
    7.   
    8.   public function printValue() {
    9.     print "Value: {$this->a} ";
    10.   }
    11. }
    12.  
    13. $obj_one = new myClass();
    14. $obj_two = new myClass();
    15.  
    16. $obj_one->changeValue($obj_two);
    17. $obj_two->printValue();
    Выводится значение 2. Т.е. внутри первого экземпляра класса, поменялось защищенное свойство второго экземпляра класса.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: privite свойство меняется другим объектом-почему (+приме

    Защищённое (protected) - может, приватное (private) - нет
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: privite свойство меняется другим объектом-почему (+приме

    в заголовке приватный, в коде защищенный. вы уж повнимательнее.
    экземпляры класса и всех классов наследованных от этого класса будут видеть защищенные свойства объектов этого класса.

    ну или терминами мануала:
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Re: privite свойство меняется другим объектом-почему (+приме

    Protected свойства и методы открыты наследникам
     
  5. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Re: privite свойство меняется другим объектом-почему (+приме

    думал, что между собой не должны видеть
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: privite свойство меняется другим объектом-почему (+приме

    А, кстати, в вашем случае и с приватным сработает. Класс имеет доступ к любым свойствам и методам любого экземпляра этого класса.