Как поздние статические привязки работают в этом сценарии? - PullRequest
0 голосов
/ 23 февраля 2011

Следующий код выводит 'x как установлено в классе A', как мне заставить его выводить 'x как установлено в классе B' без изменения класса B?

<?php

class A
{
    public static $x = 'x as set in class A';

    public static function getX()
    {
        return self::$x;
    }
}


class B extends A
{
    public static $x = 'x as set in class B';
}


echo B::getX();

1 Ответ

2 голосов
/ 23 февраля 2011

self всегда относится к классу, в котором он определен.То, что вы ищете, это «Позднее статическое связывание» (как вы уже предлагаете, но не используйте).Ключевое слово static в блоке кода относится к «фактическому» классу и означает: либо вызываемый класс (XY::method()), либо класс вызываемого объекта ($x->method()).

return static::$x;

Ключевое слово static в объявлении свойства не имеет ничего общего с LSB.Это просто общее заявление для свойств класса.

Обратите внимание, что LSB недоступен в PHP <5.3 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...