オブジェクトとデータ構造
オブジェクトとデータ構造
1. ゲッターとセッターを使用する オブジェクトのカプセル化を使用する
2. オブジェクトにはプライベートまたは保護されたメンバー変数を使用します。
1.ゲッターとセッターを使用する
PHP では、オブジェクト プロパティへの変更を制御するメソッドとしてpublic、
protected、
private を使用できます。
-
オブジェクトのプロパティを取得する以外の操作を実行する場合、コード内の各プロパティ アクセス メソッドを検索して変更する必要はありません。
-
set
に対応する属性メソッドがある場合、パラメータ検証を追加するのが簡単
-
パッケージ内の表記
-
set
と
getを使用すると、ロギングとエラー制御を簡単に追加できます。
-
現在のクラスを継承するときに、デフォルトのメソッド関数をオーバーライドできます。
-
オブジェクトのプロパティをリモート サーバーから取得する場合、
get*
、
set*は遅延読み込みを使用するのが簡単です。
###悪い:###
リーリー ###良い:### リーリー
2. オブジェクトにはプライベートまたは保護されたメンバー変数を使用します
パブリック メソッドとプロパティを変更することは、外部コードが簡単に依存する可能性があり、制御できないため、非常に危険です。これを変更すると、このクラスのすべてのユーザーに影響します。パブリック メソッドとプロパティの変更は、一部の外部コードが簡単に依存する可能性があり、どのコードがそれらに依存するかを制御できないため、変更が最も危険です。クラス内の変更は、クラスのすべてのユーザーにとって危険です。
-
protected への変更は、サブクラスで利用できるため、public への変更とほぼ同じくらい危険です。これらの唯一の違いは、呼び出し可能な場所が異なり、それらへの変更は、このクラスを統合するすべての場所に影響します。 protected 修飾子は、どの子クラスのスコープでも使用できるため、public と同様に危険です。これは事実上、public と protected の違いはアクセス メカニズムのみであり、カプセル化の保証は同じであることを意味します。クラス内の変更は、すべての子孫クラスにとって危険です。 。
- private への変更は、コードのこの部分が現在のクラスにのみ影響することを保証します。private 修飾子は、単一クラスの境界内でのみコードを変更するのは危険であることを保証します (変更しても安全であり、ジェンガ効果はありません)。
したがって、クラス内のコードにアクセスできるかどうかを制御する必要がある場合は public/protected
を使用し、それ以外の場合は private
を使用します。
Fabien Potencier によるこのブログ投稿を読むことができます。
###悪い:### リーリー ###良い:###
リーリー