ホームページ > バックエンド開発 > PHPチュートリアル > PHPクラスの詳細な解釈 encapsulation_PHPチュートリアル

PHPクラスの詳細な解釈 encapsulation_PHPチュートリアル

WBOY
リリース: 2016-07-15 13:33:21
オリジナル
866 人が閲覧しました

public: メソッドまたはプロパティは任意のスコープでアクセスできます。プロパティまたはメソッドにアクセス修飾子が指定されていない場合、これがデフォルトです。

protected: メソッドまたはプロパティには、クラスまたは継承クラスのメンバーからのみアクセスできます。

private: メソッドまたはプロパティには、クラスのメンバーからのみアクセスでき、継承されたクラスのメンバーからはアクセスできません。プライベートとしてマークされたメソッドまたはプロパティは、継承されたクラスで再定義できます。各クラスは、それが定義するプライベート メソッドのみを参照できます。

これら 3 つの修飾子は、次のようにスコープの観点から大きいものから小さいものに並べ替える必要があります:

public→protected→private スコープ内であると言われる理由は、クラスが前の関数と同じで結合されているためです。メソッドが PHP クラスにカプセル化されている一部の属性。このカプセル化によってデータの「可視性」が決定されるため、定義されたプロパティとメソッドをクラス外で自由に変更することはできず、それらを呼び出すことのみが可能になります。これはカプセル化の利点であり、セキュリティも向上します。これらの修飾子の役割を説明するには、次のコードを見てください:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?php   </span></span></li><li><span>class myClass{   </span></li><li class="alt"><span>public $</span><span class="attribute">public</span><span>=</span><span class="attribute-value">"Public"</span><span>;   </span></li><li><span>protected $</span><span class="attribute">protected</span><span>=</span><span class="attribute-value">"Protected"</span><span>;   </span></li><li class="alt"><span>private $</span><span class="attribute">private</span><span>=</span><span class="attribute-value">"Private"</span><span>;   </span></li><li><span>function say_Hello(){   </span></li><li class="alt"><span>//我现在什么也不做,等下再告诉你   </span></li><li><span>}   </span></li><li class="alt"><span>}   </span></li><li><span>$</span><span class="attribute">obj</span><span>=</span><span class="attribute-value">new</span><span> myClass();   </span></li><li class="alt"><span>echo $obj-</span><span class="tag">></span><span>public;   </span></span></li>
<li>
<span>//echo $obj-</span><span class="tag">></span><span>protected;   </span>
</li>
<li class="alt">
<span>//echo $obj-</span><span class="tag">></span><span>private;   </span>
</li>
<li>
<span class="tag">?></span><span>   </span>
</li>
<li class="alt">
<span class="tag"><</span><span> ?php  </span></li><li><span>class myClass{  </span></li><li class="alt"><span>public $</span><span class="attribute">public</span><span>=</span><span class="attribute-value">"Public"</span><span>;  </span></li><li><span>protected $</span><span class="attribute">protected</span><span>=</span><span class="attribute-value">"Protected"</span><span>;  </span></li><li class="alt"><span>private $</span><span class="attribute">private</span><span>=</span><span class="attribute-value">"Private"</span><span>;  </span></li><li><span>function say_Hello(){  </span></li><li class="alt"><span>//我现在什么也不做,等下再告诉你  </span></li><li><span>}  </span></li><li class="alt"><span>}  </span></li><li><span>$</span><span class="attribute">obj</span><span>=</span><span class="attribute-value">new</span><span> myClass();  </span></li><li class="alt"><span>echo $obj-</span><span class="tag">></span><span>public;  </span>
</li>
<li>
<span>//echo $obj-</span><span class="tag">></span><span>protected;  </span>
</li>
<li class="alt">
<span>//echo $obj-</span><span class="tag">></span><span>private;  </span>
</li>
<li>
<span class="tag">?></span><span>   </span>
</li>
</ol>
ログイン後にコピー

上記の例を実行すると、「Public」が取得されますが、//echo $obj->private のコメントを削除すると、 ; を実行すると、次のエラーが表示されます: 致命的エラー: E:apachehtdocsexamplefile.php の 13 行目の保護プロパティ myClass::$protected にアクセスできません。

クラスの属性定義に自由にアクセスできないことがわかります。つまり、PHP クラスのカプセル化で定義された一部の操作は変更できません。これが可視性です。これらのメンバーは他のクラスには表示されない可能性があるため、このクラスのメンバーが「外部」にはわかりません。

もちろん、「プライベート」として定義された属性にアクセスまたは変更する必要がある場合は、PHP が提供するシステム メソッド _get() および _set() を使用することもできます。今はまだ理解しているだけなので、これについては後で詳しく学びます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446066.html技術記事 Public: メソッドまたはプロパティは任意のスコープでアクセスできます。プロパティまたはメソッドにアクセス修飾子が指定されていない場合、これがデフォルトです。保護中:方...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート