13. アクセス型 型アクセス修飾子を使用すると、開発者はクラス メンバーへのアクセスを制限できます。これは PHP5 の新機能ですが、
は OOP 言語の優れた機能です。そして、ほとんどの OOP 言語はすでにこの機能をサポートしています。 PHP5 は、public (パブリック、デフォルト)、private (プライベート)、および protected (保護された) の 3 つのアクセス修飾子をサポートしています。
public public 修飾子。クラス内のメンバーにはアクセス制限はありません。すべての外部メンバーがアクセス (読み取りおよび書き込み) できます。
このクラス メンバー (メンバー プロパティとメンバー メソッドを含む)、PHP5 より前のすべてのバージョン、PHP のすべてのメンバークラスはパブリックであり、PHP5 では、クラスのメンバーがメンバー アクセス修飾子を指定しない場合、そのクラスはパブリックとみなされます。
例: public $name;
public functionsay(){};
private メンバーとして定義された private 修飾子は、同じクラス内のすべてのメンバーに表示されます。つまり、
には外部コードに対してアクセス制限がありません。このクラスのサブクラスは、プライベートで変更されたメンバーにアクセスできません。
例: private $var1 = ‘A’; //属性
private function getValue(){} //関数
protected 保護されたメンバー修飾子、保護されたメンバーとして変更されたメンバーには、クラスの外部コードからアクセスできません。ただし、
はこのクラスのサブクラスへのアクセス権を持ち、プロパティとメソッドの読み取りと書き込みができます。
サブクラスを含むこのサブクラスの外部コードには、そのプロパティとメソッドにアクセスする権限がありません。
例: protected $name;
protected functionsay(){};
private protected public
同じクラス内√ √
クラスのサブクラス内√ √
すべての外部メンバー√
コードスニペット
コードは次のとおりです。
/*** MyClass を定義する
*/
class MyClass{
public $public = 'Public'
protected $protected = 'Protected'; = ' プライベート';
関数 printHello(){
echo $this->public;
echo $this->private;
$obj = new MyClass() ;
echo $obj->public; // 動作します
echo $obj->protected; // 致命的なエラー
$obj->printHello(); / Public、Protected、Private を示します
/**
* MyClass2 を定義します
*/
class MyClass2 extends MyClass{
//public メソッドと protected メソッドは再宣言できますが、private は再宣言できません
protected $protected = 'Protected2';
function printHello( ){ / /Works
echo $obj2->private; // 未定義
echo $obj2->protected; // 致命的なエラー
$obj2->printHello(); // Private ではなく、Public を示します
?>
コードスニペット
コードをコピー
コードは次のとおりです:
/**
* MyClass を定義する
*/
class MyClass{
// コンストラクターは public である必要があります
public function __construct() { }
// パブリックメソッドの宣言
public function MyPublic() { }
// プロテクトメソッドの宣言
protected function MyProtected() { } // プライベートメソッドの宣言 private function MyPrivate() { } // これは public function Foo() {
$this->MyProtected();
$this->MyPrivate(); myclass = new MyClass;
$myclass->MyPublic(); // 致命的なエラー
$myclass->MyPrivate(); >Foo(); // パブリック、保護、およびプライベートの作業
/**
* MyClass2 を定義します
*/
class MyClass2 extends MyClass{
// これは public です
function Foo2(){
$this->MyPublic() ;
$this->MyProtected(); // 致命的なエラー
}
$myclass2 = new MyClass2->MyPublic(); $myclass2->Foo2 (); // プライベートではなくパブリックおよび保護された作業
;
さらに、サブクラスが親クラスのメソッドをオーバーライドする場合は、サブクラス内のメソッドのアクセス権が親クラスのアクセス権より低くなってはいけないことにも注意する必要があります。オーバーライドされたメソッドは、親クラス メソッドのアクセス権限以上である必要があります。
たとえば、親クラスのメソッドのアクセス権限が保護されている場合、サブクラスでオーバーライドされる権限は保護されている必要があります
親クラスのメソッドがパブリックの場合、メソッドはサブクラスでオーバーライドされます。つまり、サブクラスの
メソッドは、常に親クラスのオーバーライドされたメソッドのアクセス許可以上である必要があります。
http://www.bkjia.com/PHPjc/320635.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/320635.html技術記事 13. アクセス タイプのアクセス修飾子を使用すると、開発者はクラス メンバーへのアクセスを制限できます。これは PHP5 の新機能ですが、OOP 言語の優れた機能です。そして最も...