変数の可視性、特にオブジェクト指向プログラミングにおけるプロパティやメソッドは、すべての開発者にとって重要な概念です。特にPHPでは、可視性修飾子public、private、protectedが、特定のプロパティやメソッドに誰がアクセスできるかを決定します。これらの概念はデータカプセル化を実装するのに役立ち、オブジェクト指向プログラムをより堅牢でメンテナンスしやすくします。このガイドでは、これらの修飾子の使用方法と、それがあなたのプログラミング構造に与える影響について学びます。
主な発見
- public: プロパティはどこからでもアクセス可能です。
- private: プロパティはそのクラス内でのみアクセス可能です。
- protected: プロパティはそのクラスと派生クラス内でアクセス可能です。
ステップバイステップガイド
1. publicプロパティを持つシンプルなクラスの作成
最初に、速度というpublicプロパティを定義するAutoクラスを作成します。これにより、外部からこのプロパティにアクセスする方法を明確に理解できます。

このクラスのオブジェクトを作成できます:

Autoの速度を30、50、あるいは130に設定すると、制約にはアクセスできません。これがpublicの可視性の強みです。
2. privateプロパティで最大速度を導入する
次に、最大速度というprivateプロパティを追加し、許可された速度のみを設定するメソッドに変更します。これにより、有効な値のみが割り当てられることを確実にできます。
このメソッドを使うことで、速度を設定しながら、過剰な値によるエラーを防ぐことができます。

3. privateプロパティのGetterおよびSetterメソッドの使用
最大速度がprivateであるため、クラス内のメソッドを通じてのみアクセス可能にできます。以下の例では、GetterおよびSetterメソッドを実装する方法を示します。

これらのメソッドを使用することで、カプセル化を達成し、外部からのプロパティへの影響を制御できます。

4. protected修飾子の理解
次に、protected修飾子を見てみましょう。これは、他のクラスから継承されたクラスに特定のプロパティへのアクセスを提供します。すなわち、サブクラスは特定のメソッドやプロパティを引き続き使用したり、上書きしたりできます。

この場合、Rennwagenはprotectedプロパティにアクセスできますが、外部クラスはアクセスできません。これにより、派生クラスのために特定の動作をコーディングできます。
5. 可視性の選択
プロパティの可視性に関して、あなたが下さなければならない重要な決定があります。基本的には、明らかに継承内で必要なプロパティでない限り、privateを使用すべきです。この場合は、protectedを選択します。

メンテナンス段階にある場合や新しい機能に取り組んでいる場合は、後でアクセスコントロールを変更することができることを覚えておいてください。必要になればいつでも変更できます。
まとめ - PHPにおけるプロパティの可視性: public, private, および protected
PHPにおけるプロパティの可視性は、データカプセル化やオブジェクト指向プログラミングを理解する上で重要です。public、private、protected修飾子を使用することで、クラス内のプロパティやメソッドへのアクセスを精密に制御できます。これらの原則を適切に適用することで、コードのメンテナンス性と安全性を大幅に向上させることができます。
よくある質問
PHPにおけるpublicの意味は何ですか?publicは、プロパティやメソッドがどこからでもアクセス可能であることを意味します。
PHPにおけるprivateの意味は何ですか?privateは、プロパティやメソッドが自身のクラスからのみ呼び出されることを意味します。
PHPにおけるprotectedの意味は何ですか?protectedは、プロパティやメソッドが自身のクラスと派生クラスから呼び出せることを意味します。
いつprivateを使用すべきですか?可視性と制御を最大化するために、デフォルトでprivateを使用すべきです。
いつprotectedに切り替えることができますか?プロパティが派生クラス内で必要とされ、外部からのアクセスを防ぎたい場合はprotectedに切り替えます。