PHP5 soyut yöntem sınıfı sabit erişme

1 Cevap php

Ben uzanan bir sınıfın bir sabitin değerini almak için çalışıyorum, ama soyut sınıfının bir yöntemi var. Bu gibi:

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

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

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

Ancak bu bir ölümcül hata ile sonuçlanır. Bunu yapmak için herhangi bir yolu var mı?

1 Cevap

Bu, mümkün değildir. Olası bir çözüm, yani altsınıflarda istenen değer döndüren bir sanal yöntem oluşturmak olacaktır

abstract class Foo {
  protected abstract function getBar();

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

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