サイトアイコン

PHPのアクセス修飾子public, protected, privateの違い

クラスやメソッドにアクセス修飾子を指定することができます。

アクセス修飾子を適切に設定することで、より安全性の高いプログラムとすることができます。

アクセス修飾子の違い

アクセス修飾子それぞれの意味は次のようなものです。

public

どこからでもアクセス可能です。

アクセス修飾子がない場合は、publicを指定したものと同じになります。

protected

クラス内とクラスを継承した子クラスからアクセス可能です。

private

クラス内のみアクセス可能です。

継承クラスからのアクセスが不可能となります。

どのアクセス修飾子を使うべきか

アクセス修飾子を指定せず、すべてをpublicにしてもプログラムの動作に支障はないと思います。

一見、アクセス権の範囲が広ければ広いほど便利に見えますが、影響力の大きさから改変がしにくくなる不便さがあります。

余計なアクセス権は想定外の場所の不具合を生む原因にもなりかねないため、できるだけ狭い範囲で作れるように考えていきましょう!

まずprivateにできないか考える

プログラムの安全性を高めるためには、privateにできるものはprivateにしたほうが良いと思います。特にプロパティは、外部から変更されると困るというケースが多いです。

しかし、privateメソッドを多用することで扱いずらくなることもあります。

例えば、「privateメソッドのみテストをしたい」「他のクラスにも似たようなメソッドがある」と感じたら、別のクラスのpublicメソッドとした方が良いかもしれません!

モバイルバージョンを終了