Доступ к константе класса из абстрактного метода в PHP5 - PullRequest
1 голос
/ 18 февраля 2010

Я пытаюсь получить значение константы расширяющегося класса, но в методе абстрактного класса.Например:

    abstract class Foo {
        public function method() {
            echo self::constant;
        }
    }

    class Bar extends Foo {
        const constant = "I am a constant";
    }

    $bar = new Bar();
    $bar->method();

Это приводит к фатальной ошибке.Есть ли способ сделать это?

1 Ответ

2 голосов
/ 18 февраля 2010

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

abstract class Foo {
  protected abstract function getBar();

  public function method() {
    return $this->getBar();
  }
}

class Bar extends Foo {
  protected function getBar() {
    return "bar";
  }
}
...