タイトル落ちですが、以下のような実装でお悩みの方の助けになればと思います。
外部から参照されることなく、またイミュータブルなものがほしいとき、
class Something {
private $age = '永遠の17歳';
public function changeAge(): void
{
$this->age = '30歳';
}
}
外部からは参照できませんが内部から変更可能なので実装次第では変化してしまう可能性があります。
class Something {
private function age(): string
{
return '永遠の17歳';
}
}
private function
が値を返すことでイミュータブルが守られますが、個人的に好きではない。
っていうかそれ定数
class Something {
private const AGE = '永遠の17歳';
}
PHP7.1からはconst
のアクセス修飾子にprivate
が書けるようになっていたので無事外部から参照されることなく、またイミュータブルなものが実現できました。
https://www.php.net/manual/ja/language.oop5.constants.php#language.oop5.basic.class.this