🍍

【PHP】public・private・protectedの違い

2022/10/10に公開約2,000字

public・private・protectedの違い

public:全てのクラスからアクセス可能
private:同じクラス内、同じパッケージ、サブクラスからアクセス可能
protected:同じクラス内のみアクセス可能

引用:https://gaara.hatenablog.com/entry/2014/05/31/115319

public・private・protectedの使い分け

  • まずはprivateにしておく
  • 子クラスから親クラスで定義したプロパティにアクセスしたい時はprotected
  • 基本的にpublicは避けるのが吉

まずはprivateにしておく

最も範囲が狭いのがprivateです。

まずはprivateで定義してみて、必要に応じてアクセス権をゆるくしていくのがおすすめです。

参考:https://php-junkie.net/design/visibility/

子クラスから親クラスで定義したプロパティにアクセスしたい時はprotected

▼理由

アクセス権がprotectedのプロパティは、そのクラス内とクラスを継承している子クラス内からのみアクセス可能です。

▼例

このように、親クラスで定義したものを子クラス内でも使いたいとき。

親クラス

class Parent{
	protected $parent;
}

子クラス

class Child extends Parent{
	public function __construct($parent){
		$this->parent = $parent;
	}
}

基本的にpublicは避けるのが吉

▼理由
publicだと、どこからでもアクセスできてしまいます。

▼例
外部から変更されるといった可能性が出てきてしまいます。
外部から変更されてしまうと自分の定義したものと意図せず中身が変わってしまうこともあります。

▼まとめ
publicは避けるようにした方が身のためです。

用語解説

  • サブクラス
  • パッケージ

サブクラスとは

クラスを継承して作成した子クラスをサブクラス
といいます。

引用:http://akutaka00.blog102.fc2.com/blog-entry-67.html

class サブクラス名 extends 親クラス名 {
    ..
}

継承する親クラスが同一ファイル内の場合は問題なく使用できます。

継承する親クラスが別ファイル内の場合は親クラスが記載されているファイルをincludeなどで読み込んでおく必要があります。

パッケージとは

>パッケージについて勉強中…

参考サイト

▼public・private・protectedの違いについての参考サイト

▼サブクラスについての参考サイト

Discussion

ログインするとコメントできます