|
|
|
@ -11,7 +11,8 @@ $object->label = trim($label);
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
上記のコードの欠点は、 `label` プロパティを設定するすべてのコードで、`trim()` を呼び出す必要があるということです。もし将来的に、 |
|
|
|
|
`label` プロパティに、最初の文字を大文字にしなければならない、といった新たな要件が発生したら、 `label` に値を代入するすべてのコードを変更しなければなりません。コードの繰り返しはバグを誘発するので、できれば避けたいところです。 |
|
|
|
|
`label` プロパティに、最初の文字を大文字にしなければならない、といった新たな要件が発生したら、 `label` に値を代入するすべてのコードを変更しなければなりません。 |
|
|
|
|
コードの繰り返しはバグを誘発するので、できれば避けたいところです。 |
|
|
|
|
|
|
|
|
|
この問題を解決するために、Yii は *getter* メソッドと *setter* メソッドをベースにしたプロパティ定義をサポートする、 [[yii\base\Object]] 基底クラスを提供します。 |
|
|
|
|
クラスがその機能を必要とするなら、 [[yii\base\Object]] またはその子クラスを継承しましょう。 |
|
|
|
@ -61,7 +62,7 @@ setter なしの getter で定義されたプロパティは、 *読み取り専
|
|
|
|
|
[[yii\base\InvalidCallException|InvalidCallException]] が発生します。同様に、getter なしの setter で定義されたプロパティは、 |
|
|
|
|
*書き込み専用* で、そのようなプロパティを読み取りしようとしても、例外が発生します。書き込み専用のプロパティを持つのは一般的ではありませんが。 |
|
|
|
|
|
|
|
|
|
getter と setter で定義されたプロパティには、いくつかの特別なルールと制限があります: |
|
|
|
|
getter と setter で定義されたプロパティには、いくつかの特別なルールと制限があります: |
|
|
|
|
|
|
|
|
|
* この種のプロパティでは、名前の *大文字と小文字を区別しません* 。たとえば、 `$object->label` と `$object->Label` は同じです。 |
|
|
|
|
これは、PHPのメソッド名が大文字と小文字を区別しないためです。 |
|
|
|
|