【 PHP 】PHP8に入門してみた 199日目 PHPの基本 ( オブジェクト指向 カプセル化 )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

オブジェクト指向

カプセル化

カプセル化は、オブジェクト指向プログラミングの重要な概念の1つです。

カプセル化とは、オブジェクトの状態を隠蔽し、オブジェクト内でのみアクセスできるようにすることです。

こうするとオブジェクトのデータが外部から誤って変更されることを防ぎ、データの整合性を保つことができるんですね。

PHPでは、カプセル化を実現するために、以下の2つのキーワードを使用します。

  1. privateキーワードを使用すると、そのプロパティやメソッドは、同じクラス内からのみアクセス可能となります。
  2. protectedキーワードを使用すると、そのプロパティやメソッドは、同じクラス内およびその子クラスからアクセス可能となります。

これらのキーワード(アクセス修飾子)を使用することで、オブジェクトの状態を隠蔽し、不正なアクセスによるデータの破損を防ぐことができます。

また、クラスのメンバーがどのように使用されるべきかを明確に示すことができます。

アクセス修飾子

PHPには、オブジェクト指向プログラミングにおいて、クラスのプロパティやメソッドへのアクセスを制御するためのアクセス修飾子があります。

以下の3種類があります。

public・・・ プロパティやメソッドは、どこからでもアクセスできるようになります。つまり、同じクラス内からも、外部からはもちろん、どこからでも呼び出せます。
protected・・・プロパティやメソッドは、同じクラス内およびその子クラスからアクセス可能となります。外部からのアクセスはできません。
private・・・プロパティやメソッドは、同じクラス内からのみアクセス可能となります。

アクセサーメソッド

アクセサーメソッドはクラスのプロパティにアクセスするためのメソッドです。アクセサーメソッドには、ゲッターとセッターの2種類があります。

 

ゲッターメソッドは、プロパティの値を取得するためのメソッドで、プロパティに直接アクセスすることはできません。

これにより、プロパティがカプセル化され、外部からの不正なアクセスを防ぐことができます。

 

セッターメソッドは、プロパティの値を設定するためのメソッドで、同様に直接プロパティにアクセスすることはできません。

これにより、プロパティの値を設定する際にバリデーション(入力検証)などを行うことができます。

アクセサーメソッドを使用することで、クラスのプロパティに対して正しいアクセス方法を提供することができ、カプセル化を維持することができます。

メモ

Javaと一緒!(あたりまえ)

PHPの4ではプロパティを宣言する際に “var" キーワードを使用することができました。

しかし、PHP 5以降では"public"、"private"、および"protected"というアクセス修飾子が導入され、"var"キーワードは非推奨となりました。

現在のPHPの最新バージョンであるPHP 8でも、"var"キーワードは使用できますが、非推奨とされています。

代わりに、"public"、"private"、および"protected"を使用することを推奨しています。

 

“var"キーワードを使用すると、そのプロパティがpublicとして定義されたとして扱われます。

“public"、"private"、および"protected"という明確なアクセス修飾子を使用することでクラスのメンバーの可視性を明確にすることができます。

また、コードの可読性を向上させることもできます。

ということで・・PHP 8では"var"キーワードを使用することはできますが、代わりにアクセス修飾子を明示的に使用することを推奨しています。

PHPPHP

Posted by raika@blog