За последние 24 часа нас посетили 93027 программистов и 6254 робота. Сейчас ищут 1260 программистов ...

вызов измененной статической переменной из дочернего класса

Тема в разделе "Прочие вопросы по PHP", создана пользователем DlTA, 3 ноя 2022.

  1. DlTA

    DlTA Новичок

    С нами с:
    23 июл 2022
    Сообщения:
    34
    Симпатии:
    1
    при выполнении кода получим 1
    PHP:
    1. class a {
    2.    
    3.     public static $a=1;
    4.  
    5.     public static function getA(){
    6.         return self::$a;
    7.     }
    8. }
    9. class b extends a  {
    10.     static public $a=2;
    11. }
    12.  
    13. var_dump(b::getA()); //int(1)
    а хотелось бы двоечку

    PHP:
    1. trait getA{
    2.    
    3.     public static function getA(){
    4.         return self::$a;
    5.     }
    6. }
    7.  
    8. class a {
    9.    
    10.     public static $a=1;
    11.  
    12. }
    13. class b extends a  {
    14.     use getA;
    15.     static public $a=2;
    16. }
    17.  
    18. var_dump(b::getA()); // int(2)
    но тут код масштабно переделывать нужно

    Может есть правильные варианты?
     
  2. AlNick

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

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    В первом варианте в методе getA() попробуйте вместо self написать static. Это называется позднее статическое связывание
     
    DlTA нравится это.
  3. DlTA

    DlTA Новичок

    С нами с:
    23 июл 2022
    Сообщения:
    34
    Симпатии:
    1
    ура, работает