子クラスによって割り当てられた値を必要とするメソッドを持つ抽象クラスがあります。言う:
<?php
abstract class Foo {
protected $value;
/* ..... other required properties here */
public function setValue($value) {
$this->value=$value;
}
public function getProcessedValue() {
// some processing here using $this->value;
return $processed_value;
}
/* ..... other public methods here using protected properties as inputs */
} end of class Foo
class ChildFoo extends Foo {
/* addtional code here */
} // end of class ChildFoo
// in main code
$child_foo=new ChildFoo();
$child_foo->setValue($value); /* how do you force this????? */
echo $child_foo->getProcessedValue();
?>
使用前に子クラスに保護されたプロパティを強制的に初期化するにはどうすればよいですか?
$child_foo->setValue($value);
ここに私がやろうと考えているいくつかのことがあります:
1) setValue を抽象メソッドにする - これにより、開発者は setValue を子クラスに実装する必要がありますが、不適切に使用する可能性があります (DUH!)
2)コンストラクターに必要なパラメーターを含めることをお勧めするSOの投稿-これは機能する可能性がありますが、すでにsetValue()があるため冗長に見えます。同じオブジェクトを異なる入力に再利用できるように、setValue() を維持する予定です。
おそらくほとんどのプログラムに共通するこの問題のパターンはありますか?