私はクラスParentClass()
、いくつかの子クラスChildClass1()
、ChildClass2()
など、およびiChild()
というインターフェイスを持っています。 ChildClass()
ParentClass()
から継承やiChild()
を実装しています:iChild()
-interfaceでインタフェース:抽象定数が必要ですか?
class ChildClass1
extends ParentClass
implements iChild {}
class ChildClass2
extends ParentClass
implements iChild {}
、私はいくつかの定数は(主識別子と一部の機能の定義である)充填する必要があることを、必要としたいと思います。定数はインターフェイスでのみ定義できますが、実装クラスでは再定義できないため、意味はありません。私が見つけた唯一の回避策は、iChild()
にいくつかのゲッター関数を定義することです。これは必要な値を返しますが、それは正しい方法ではないようです。私がすでにParentClass()
から拡張しているように、私は抽象クラスを使用することもできません。すべてのChildClassesで必要な定数の定義を確認してください。
この問題に対処する方法はありますか?
更新:コメントに答えるために - スリムと私は次のように意味がより読みやすいと:
class ChildClass1 {
const MY_NAME = "Foo Bar Name 1";
}
-- vs --
class ChildClass1 {
public function GetMyName() {
return "Foo Bar Name 1";
}
}
を私は2番目のより多くの読みやすく、理解しやすい最初の例を見つけます。残念ながら、私は現在、ChildClassesによってMY_NAMEが設定されるように強制する方法はありません。
これは私が現在実装している方法ですが、メソッドよりも定数を呼び出すことをお勧めします。それはより希薄で、より正確に感じます。あなたの答えはとにかくありがとう。 – Lars
それはどのようにして「より正確に感じますか」ということですか?とにかく実装のクラス名に縛られることなく、異なる実装に異なる定数を定義させることはありません。 – cspray