За последние 24 часа нас посетил 58191 программист и 3122 робота. Сейчас ищут 1255 программистов ...

Обращение к переменной в классе

Тема в разделе "PHP для новичков", создана пользователем energy2008, 22 дек 2008.

  1. energy2008

    energy2008 Активный пользователь

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. class Cla
    4.     {
    5.   var $d;
    6.   function getsome()
    7.       {
    8.  
    9.  
    10.        $this->d = 1;
    11. return $this->d ;
    12.       }
    13.     }
    14. $dd = new Cla;
    15. echo $dd->d;
    16. ?>

    сейчас значение d является пустым, как правильно написать обращение к переменнной в классе чтобы выводилось ее значение, задаваемой функцией getsome()?
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    а для чего тогда ты писал метод getsome() ?
    чтобы задать значение? мдя.
     
  3. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    PHP:
    1. echo $dd->getsome()
    и немножко почитать про классы, свойства, методы и вааапсче
     
  4. energy2008

    energy2008 Активный пользователь

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    написал так, потому что заинтересовал подобный тип обращения к данным внутри функции
    Пример ниже с подобной конструкцией работает:
    PHP:
    1. <?
    2. class mp3_id3
    3. {
    4.     var $tag;
    5.    var $songname;
    6.    var $artist;
    7.    var $album;
    8.    var $year;
    9.    var $comment;
    10.    var $genre;
    11.     function read_id3($file) {
    12.       $file_mp3 = fopen($file, "rb");
    13.       fseek($file_mp3, -128, SEEK_END);
    14.       $this->tag=fread($file_mp3, 3);
    15.       if($this->tag!="TAG") return false;// это не ID3 или не мп3
    16.       $this->songname=fread($file_mp3, 30);
    17.       $this->artist=fread($file_mp3, 30);
    18.       $this->album=fread($file_mp3, 30);
    19.       $this->year=fread($file_mp3, 4);
    20.       $this->comment=fread($file_mp3, 30);
    21.       $this->genre=fread($file_mp3, 1);
    22.       fclose($file_mp3);
    23.       return true;
    24.    }
    25. }
    26.  
    27. $mp3 = new mp3_id3;
    28.  
    29. if($mp3->read_id3("03-psyba-drop_da_bass-usf.mp3")) {
    30.    print($mp3->songname."<br>"); // песня
    31.    print($mp3->artist."<br>"); // артист
    32.    print($mp3->album."<br>"); // альбом
    33.    print($mp3->year."<br>"); // год
    34.    print($mp3->comment."<br>"); // коментарии
    35.    print($mp3->genre."<br>"); // жанр
    36. }
    37. ?>

    по прежнему интересно где именно ошибка у меня в коде
     
  5. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    проблема видимо в днк.
    1) извне к свойствам класса надо обращаться через методы.
    2) выясняем, что первично - кирпич или головная боль.
     
  6. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    в чем она подобная?
     
  7. energy2008

    energy2008 Активный пользователь

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    PHP:
    1. <?php
    2. class Cla
    3.     {
    4.     function getsome($z)
    5.       {
    6.        $this->d = ($z+1);
    7.        return true;
    8.       }
    9.     }
    10. $dd = new Cla;
    11. if($dd->getsome(1))
    12. {
    13.     echo $dd->d;
    14. }
    15. ?>
    так работает
     
  8. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    <?php
    class MyClass {
    var $property;
    }
    $obj1 = new MyClass;
    $obj1->property = 1;
    echo $obj1->property;

    ?>
     
  9. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    да уж
    PHP:
    1. <?php
    2. class Cla {
    3.      public $d;
    4.      private function makesome($a) {
    5.          $a = sqrt(1222342 * 445 + 334289);
    6.          $this->d = $a;
    7.          }
    8.      $this->d=1;
    9. }
    10. $dd = new Cla;
    11. echo $dd->d;
    12. ?>
    тоже работать будет, ток чо эта такое?
     
  10. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Ничего так у вас трава... Отсыпьте на забивку..
     
  11. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    это к топикстартеру =)
     
  12. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    О, на этот вопрос я ответить могу. Это бред.
     
  13. djunkie

    djunkie Активный пользователь

    С нами с:
    19 ноя 2008
    Сообщения:
    134
    Симпатии:
    0
    этим я хотел навести автора на мысль о необходимости метода или свойства =)
     
  14. energy2008

    energy2008 Активный пользователь

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    У меня не трава, а пиво, много пива, вот решил похапе поизучать...
     
  15. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Какое-то забористое пиво у тебя......... Шоп я так жил..
     
  16. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    День добрый.
    Извините, что вмешиваюсь. Просто вопрос не столь важен, чтобы создавать новую тему.
    Скажите, как можно создать свойства класса "только для чтения"
    И главный вопрос: стоит ли это делать?
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Использовать геттеры и сеттеры
    (в PHP есть "удобные" магические методы __get()/__set() )
    Стоит или не стоит зависит от архитектуры.
     
  18. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    Спасибо.
    Тоже попутный вопрос по нагическим методам.
    PHP:
    1. <?php
    2.  
    3. public function __call($func, $ag) {
    4. //Нужно вызвать функцию с подключенного расширения с нужным количеством аргументов, только как это сделать?
    5. $this->extension->$func($ag[0], $ag[1].....);
    6.  
    7. }
    8. ?>
    Вот как сделать, чтобы передать только "установленные" аргументы
    Думал с extract -- массиво-то не асоциативный, и что мне даст разбиение на переменные??
     
  19. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А может стоит попутные вопросы, не связанные с темой топика, задавать в отдельном топике?

    call_user_func() и call_user_func_array() соответственно. И магический метод тут не причем.