не могу разобраться с доступом к классам

Тема в разделе "PHP", создана пользователем kirill.nikola, 12 июл 2014.

  1. kirill.nikola

    kirill.nikola

    Регистрация:
    18 июл 2013
    Сообщения:
    0
    Симпатии:
    2
    Недавно начал изучать php, строго не судите, на текщий момент не могу разобраться с классами, есть
    PHP:
    class classname {
        var 
    $attribute;
        function 
    operation($param) {
            
    $this->attribute $param;
            echo 
    $this->attribute;

        }
    }  

    $ab = new classname();
    $ab->operation(45);  // по идее здесь присваиваю $attribute значение 45
    echo $ab->attribute// проверяю присвоилось ли оно и все работает
    При изменении функции внутри класса, не работает, подскажите пожалуйста
    PHP:
    class classname {
        var 
    $attribute;
        var 
    $attribute2;
        function 
    operation($param,$hey) {
            
    $this->$hey $param;
            echo 
    $this->$hey;

        }
    }  

    $ab = new classname();
    $ab->operation(45,$attribute2);
    echo 
    $ab->attribute2;
     
    awmcolombia нравится это.
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    1. var это отголоски php 4, нужно пользоваться модификаторами доступа: public, private, protected
    2. во втором случае у вас нет $attribute2, где вы его взяли?
    3. в метод operation вы передаёте $hey, и потом присваиваете вникуда... $this->$hey . У вас нет свойства $hey.

    Предполагаю что вы хотели сделать так.
    PHP:
    class classname {
        public 
    $attribute;
        public 
    $attribute2;
        function 
    operation($param$hey) {
            
    $this->attribute $param;
            
    $this->attribute2 $hey;
        }
    }

    $ab = new classname();
    $ab->operation(45123);
    // выводим содержимое свойства attribute
    echo $ab->attribute;
    echo 
    '<br />';
    // выводим содержимое свойства attribute2
    echo $ab->attribute2;
    по хорошему и по ООП, нужно делать гетеры и сетеры, чтобы к св-вам нельзя было обращаться напрямую
     
    awmcolombia нравится это.
  3. kirill.nikola

    kirill.nikola

    Регистрация:
    18 июл 2013
    Сообщения:
    0
    Симпатии:
    2
    А если я хочу чтобы $param принимал переменную, например $attribute или $attribute2, а $hey присваивала значения этой самой переменной?
     
    awmcolombia нравится это.
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.581
    Симпатии:
    1.482
    ну так присвойте этой переменной что-нибудь.
    PHP:
    $variable 'ололо';
    $ab->operation($variable123);
     
    awmcolombia нравится это.
  5. PavelBlossom

    PavelBlossom

    Регистрация:
    25 июл 2014
    Сообщения:
    2
    Симпатии:
    0