PHPでのパブリック、プライベート、および保護の違いは何ですか

Phpdenopaburikku Puraibeto Oyobi Bao Huno Weiiha Hedesuka



PHP は、動的な Web サイトや Web アプリケーションの開発に広く使用されています。 PHP は、 アクセス修飾子 .アクセス修飾子プロパティは、次のような 3 つの異なる方法で変数、クラス、またはクラス プロパティにアクセスするために使用されます。 公共 プライベート、 保護された .この記事では、これらのアクセス修飾子について説明し、PHP プログラミング言語におけるこれら 3 つのアクセス修飾子の違いを判断します。

PHP のアクセス修飾子とは何ですか?

PHP では、クラス属性とメソッドの可視性とアクセス可能性をユーザーが調整できるようにするため、アクセス修飾子は不可欠です。この結果、カプセル化とデータ セキュリティが提供されるため、クラス メンバーは不正なアクセスや改ざんから保護されます。また、コードのメンテナンスとデバッグが容易になります。







アクセス修飾子の種類

PHP に存在する 3 つのアクセス修飾子について、以下で説明します。



  • 公共: クラスの外から public メソッドにアクセスできます。これは、すべてのコードがパブリック メソッドにアクセスし、変更し、呼び出すことができることを意味します。
  • プライベート: プライベート メソッドへのアクセスは、クラス自体に制限されています。これは、子クラスであっても、プライベート メソッドへのアクセスやプライベート値の読み取りが許可されていないことを意味します。
  • 保護中: 保護されたメソッドは、クラスおよびそれに関連するクラス内でのみアクセスできます。これらのクラス以外では使用できません。クラス インスタンスにアクセスする必要があるソース コードは、保護されたプロパティのデータを読み取ったり変更したり、保護された関数を呼び出したりすることができます。

PHP におけるパブリック、プライベート、および保護されたアクセス修飾子の違い

財産 公共 プライベート 保護された
アクセシビリティ これらのアクセス修飾子は、コードの内外などどこからでもアクセスできます。 プライベート アクセス指定子は、クラス内でのみアクセスできます。 クラスとその関連(子)クラス、およびメソッド内でアクセスできます。
柔軟性 最も柔軟性が高いのは、どこからでもアクセスできるパブリック リソースです。 これらのメソッドはクラス内で排他的にアクセスできるため、柔軟性が最も低くなります。 保護されたメソッドは、子クラスがこれらのメソッドにアクセスできるため、適度な柔軟性を提供します。
カプセル化 他のコードはパブリック メソッドにアクセスしたり、カプセル化したりすることがありますが、プログラマはこれを制御できます。 プライベート メソッドはクラス内にカプセル化されているため、外部コードからアクセスしたり更新したりすることはできません。 そのカプセル化プロセスは、PHP の public メソッドと同じです。
安全 パブリック メソッドはどこからでもアクセスできます。そのため、コードで低レベルのセキュリティを提供します。 プライベート アクセス修飾子はクラス内に完全に含まれているため、最高レベルのセキュリティが提供されます。 クラスとそのサブクラスのメンバーのみがアクセスできるため、保護されたアクセス修飾子は妥当なレベルのセキュリティを提供します。

PHP の簡単なプログラム例を使用して、これらのアクセス指定子の違いを見てみましょう。



例: プライベート、パブリック、および保護されたアクセス修飾子を使用した PHP プログラム





次の例は、1 つのサンプル コードで public、private、および protected の違いを示しています。

< ?php
クラス MyClass {
公共 $パブリック = 「パブリック変数。 \n ' ; /// どこからでもアクセス可能
プライベート $プライベート = 「プライベート変数。 \n ' ; /// クラス内からのみアクセス可能
保護された $保護された = 「保護変数」。 ; /// クラスおよびサブクラス内でアクセス可能

公共 関数 getPrivate ( ) {
戻る $this - > プライベート;
}

公共 関数 getProtected ( ) {
戻る $this - > 保護されています。
}
}
$obj = 新しい MyClass ( ) ;

エコー $obj - > 公共;
エコー $obj - > getPrivate ( ) ;
エコー $obj - > getProtected ( ) ;
? >



上記のプログラムでは、クラスを次のように定義しました。 私のクラス 公共財産として $パブリック コード内のどこにでもアクセスでき、非公開プロパティとして $プライベート 、および保護されたプロパティと呼ばれる $保護された 、したがって、プライベートおよび保護された指定子にクラスの外部から直接アクセスすることはできません。と呼ばれる2つのパブリックメソッドを使用したため getPrivate() getProtected() それぞれ、プライベート プロパティ変数と保護プロパティ変数の値を返します。出力は以下のとおりです。

結論

PHP は多くの機能を提供しますが、そのうちの 1 つがアクセス修飾子と呼ばれるキーワードです。これらのアクセス修飾子は、PHP プログラム内のクラスのデータへのさまざまなアクセス パターンを提供します。上記のチュートリアルでは、PHP で提供されるアクセシビリティ、カプセル化、柔軟性、およびセキュリティの観点から、アクセス修飾子の違いを見てきました。