За последние 24 часа нас посетили 20489 программистов и 1126 роботов. Сейчас ищут 743 программиста ...

[ООП] Не воспринимает новое значение

Тема в разделе "PHP для новичков", создана пользователем echocage, 13 окт 2021.

Метки:
  1. echocage

    echocage Новичок

    С нами с:
    13 окт 2021
    Сообщения:
    3
    Симпатии:
    0
    Всем привет! Помогите пожалуйста разобраться что тут не так.
    Код (Text):
    1. <?php
    2.  
    3. class User {
    4. public $name = "Default";
    5. private $surname = "None";
    6. private $email;
    7. private $login;
    8. private $pass;
    9.  
    10. function  __construct($name, $surname, $login){
    11. $this->$name = $name;
    12. $this->surname = $surname;
    13. $this->pass = pass;
    14.  
    15. }
    16.  
    17.     function showAll($text = ""){
    18. echo $text . $this->name . ", " . $this->surname . "<br>";
    19. }
    20. function getsurname(){
    21.     return $this->surname;
    22. }
    23. }
    24.  
    25. $admin = new User("John", "Marley", "Admin");
    26.  
    27. $admin->showAll("Пользователь: ");
    28. $str = $admin->getsurname();
    29. echo $str;
    30.  
    31.  
    32. echo "<br>";
    33.  
    34. $redactor = new User("Bob", "abcd", "Login");
    35. $redactor->showAll();
    36.  
    37. $moderator = new User("George", "Mad", "Madgeorge");
    38. $moderator->showAll();
    Переменной $name указано, что значение имени по умолчанию = default, но метод конструкт создает форму по которой в дальнейшем создается пользователь. Возьмем например пользователя admin. По форме указано, что его зовут John Marley и его логин Admin, проблема в том что имя не перезаписывается как по форме, а используется его начальное значение(default).
     
  2. KingdaKa

    KingdaKa Новичок

    С нами с:
    7 сен 2021
    Сообщения:
    87
    Симпатии:
    16
    Внимательность!

    Код (Text):
    1. $this->name = $name; // тут
    2. $this->surname = $surname;
    3. $this->pass = $pass; // и тут
     
    echocage нравится это.
  3. echocage

    echocage Новичок

    С нами с:
    13 окт 2021
    Сообщения:
    3
    Симпатии:
    0
    Прости в чем ошибка? Я не понимаю, скорее всего в силу опыта
     
  4. KingdaKa

    KingdaKa Новичок

    С нами с:
    7 сен 2021
    Сообщения:
    87
    Симпатии:
    16
    :eek: ты бы сравнил что ли, вот твой код

    1. $this->$name = $name;
    2. $this->surname = $surname;
    3. $this->pass = pass;
    Ничего не заметно? )))
     
    echocage нравится это.
  5. echocage

    echocage Новичок

    С нами с:
    13 окт 2021
    Сообщения:
    3
    Симпатии:
    0
    Огромное спасибо! Не заметил сначала
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    130
    error_reporting(E_ALL) всегда делайте.
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    всегда на локалке. и никогда на проде, т.к. дамп с ошибкой это средство для исследования скрипта хакером.
    выполняйте это действие в зависимости от конфигурации.
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    130
    На проде предпочитаю ловить обработчиками ошибок и логгировать.