За последние 24 часа нас посетили 63119 программистов и 1737 роботов. Сейчас ищут 896 программистов ...

Указатель this

Тема в разделе "PHP для новичков", создана пользователем Golovastik, 20 ноя 2010.

  1. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Понял, нужно вот так:
    Код (Text):
    1.  
    2. class A{
    3. var $x1;
    4. function setname(){
    5. echo $this->x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    Только если написать так:
    Код (Text):
    1.  
    2. class A{
    3. public var $x1;
    4. function setname(){
    5. echo $this->x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    10.  
    11.  
    12. ?>
    пахать не будет
     
  2. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    echo $this->x1 = 7;
     
  3. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Написал так:
    Код (Text):
    1.  
    2. class A{
    3. var $x1, $x2;
    4. function setname(){
    5. echo $this->$x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    Выдаёт вначале ошибку что х1 неопределена, а потмо выводит число 7,почему?:
     
  4. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Понял, нужно вот так:
    Код (Text):
    1.  
    2. class A{
    3. var $x1;
    4. function setname(){
    5. echo $this->x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    Только если написать так:
    Код (Text):
    1.  
    2. class A{
    3. public var $x1;
    4. function setname(){
    5. echo $this->x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    10.  
    11.  
    12. ?>
    пахать не будет
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    public var = var var
    Ты же так не пишешь?
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. <?php
    2. class A{
    3.     private $x;
    4.  
    5.     public function setX($x){
    6.        $this->x = $x;
    7.     }
    8.  
    9.     public function getX(){
    10.         return $this->x;
    11.     }
    12. }
    13. $a = new A();
    14. $a->setX(1);
    15. echo $a->getX();
     
  7. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Я написал как надо писать
    А ошибка потому что х1 определена внутри класса, а попытка написать $x1 привела к тому что интерпретатор ищет ее в локальной области видимости и не находит. Все переменные класса доступны через $this.
    Выводит 7 потом что echo стоит и семерка просто перекочевала через ошибочный код в ехо.

    Оппа, аскер переделал вопросы. И кто знает чего хотел))
     
  8. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Может имеется ввиду про
    public $x;
    ???

    Кажись понял. Пишешь масло масляное вот он и ругается.
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  10. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Прошу прощения, я по повод своего код, если написать так, тоже не хочет пахать.
    Код (Text):
    1.  
    2. class A{
    3. public  $x1;
    4. function setname(){
    5. echo $this->x1 = 7;
    6. }
    7. }
    8. $object = new A;
    9. $object->setname();
    Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Golovastik
    а зачем ты так пишешь? зачем тебе вообще класс тогда?
    ну вот так напиши
    PHP:
    1. <?php
    2. class A{
    3. public  $x1;
    4. function setname(){
    5. $this->x1 = 7;
    6. echo $this->x1;
    7. }
    8. }
    9. $object = new A;
    10. $object->setname();
    11.  
     
  12. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    РНР случайно не 4 версии? В 4-ке нет пабликов.
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    да, похоже на то, у меня его код пашет
     
  14. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Аскер переправил код:) Там были ошибки. А сейчас нет. Вот и гадаю, чего хотел...
     
  15. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    [​IMG]
    Как сменить чисто пхп, чтоб не менять весь апач, можно так?
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Golovastik
    что говорит
    PHP:
    1. <?php echo phpversion(); ?>
    ?
     
  17. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Говорится что 4.3.6
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Golovastik
    тогда переставляй php, я хз как это делается, у меня не windows
     
  19. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Padaboo
    MySQL 3 =)))
     
  20. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Apple
    хех, надо было догадаться)
     
  21. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Денвер новый качать надо или просто писать var а не pubic. Особо не будет разницы)
     
  22. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    У меня денвер сколько не пытался новый никак не хочет работать, на многих форумах спрашивал, и здесь тоже толком и не получил ответ, хоть и качал много раз и переустанвливал много раз и на чистом виндоусе тоже, работать не хочет, даже тестовый сайт test1.ru не запускался.

    Как на моём денвере установить чтоб работало. Вот скачал здесь http://www.php.net/downloads.php
    Раз архивировал, получил такую папку, куда её пихать? Вот фото что получил.


    [​IMG]
     
  23. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  24. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Я что-то сомневаюсь что качать чистый РНР - это вариант. Качайте денвер с последней версией РНР и долбите мануал до тех пор пока не встанет.