アクセス修飾子は、他の PHP 識別子の変数に対するアクセシビリティのスコープと権限を設定する方法です。 PHP は、任意の変数と識別子にアクセスできるようにするためのさまざまなキーワードをサポートしています。これらのキーワードをクラス、関数、または識別子に割り当てることができます。これらのキーワード – public、private、protected、abstract、final など
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
Java とは異なり、PHP にはアクセス修飾子にいくつかの制限があります。クラス レベル、関数レベル、識別子レベルですべての PHP アクセス修飾子を使用できるわけではありません。ビジネス ニーズに応じて、これらのアクセス修飾子を使用して、プログラムまたはアプリケーション全体で許可を付与したり、許可を取り消したりできます。
リスト修飾子とそれが適用可能かどうかは次のとおりです。
Access Modifier | Class Level | Function Level | Variable Level |
public | NA | YES | YES |
private | NA | YES | YES |
protected | NA | YES | YES |
abstract | YES | YES | NA |
final | YES | YES | NA |
Static | NA | YES | YES |
上記の話では、NA は該当なしを示します。つまり、クラス レベルで public、private、protected を使用することはできません。要約と最終はクラス レベルでのみ使用できます。
以下に挙げる PHP のアクセス修飾子は次のとおりです
public は、PHP の JAVA のようなデフォルトの修飾子です。つまり、デフォルトで識別子の機能を持つ修飾子を使用しない場合、その修飾子はパブリック アクセス修飾子とみなされます。これは最も広く使用されているものの 1 つです。関数のコードを再利用できるようになると、通常は public アクセス修飾子を使用します。なぜなら、パブリックはクラス内、クラス外、拡張クラス内など、どこからでも使用できます。また、そのパブリックの再利用可能ファイルがどのクラスにも制限されていない場合は、ファイルをインクルードしたどこからでも使用できます。上の表で述べたように、この public 修飾子を private および protected と同様にクラスで使用することはできません。
次に、パブリック アクセス修飾子の例を見てみましょう。
<?php class MyAccess { var $var = "This is first var"; // print var variable value function returnVar() { echo $this->var; } } $obj1 = new MyAccess();$obj1->returnVar(); ?>
上記のコードでは、returnVar() 関数はアクセス修飾子なしで定義されているため、これは PHP 言語のデフォルトの修飾子であるため、パブリックとして機能します。
public、private、および protected はクラス レベルでは適用されません。例で見てみましょう。
<?php class public MyAccess { var $var = "This is first var"; function returnVar() { echo $this->var; } } $obj1 = new MyAccess(); $obj1->returnVar(); ?>
上記のコードでは、以下のようなエラーが発生します:
( ! ) 解析エラー: 構文エラー、予期しない「public」(T_PUBLIC)、E:wampwwwtwitindex.php の 2 行目で識別子 (T_STRING) が必要です
これは、プライベートでも保護でも同じです。
<?php class private MyAccess { var $var = "This is first var"; } ?> <?php class protected MyAccess { var $var = "This is first var"; } ?>
この修飾子では、プライベート キーワードを使用して処理します。 クラスでは private 修飾子を使用できません。これは、クラス変数とクラス メソッドでのみ使用できます (上の表で説明したように)。プライベートを宣言して使用する場合、クラスのオブジェクトを使用してプライベートにアクセスすることはできません。クラス内でのみ使用できます。
例
<?php class MyAccess { var $var = "This is first var"; private $fist_name; // simple class method function returnVar() { echo $this->fist_name; } function set_fist_name($set_this){ $this->fist_name = $set_this; } } $obj1 = new MyAccess(); echo $obj1->fist_name; // will give the error $obj1->set_fist_name("Jai Shre"); $obj1->returnVar(); ?>
echo $obj1->fist_name; // エラーが発生します
このコード行はエラーが発生するので使用できます。これは、そのクラスのオブジェクトを使用してプライベート変数にアクセスできないものです。ただし、上記のコードで使用しているように、その設定とゲッター メソッドを使用することでこれを使用できます。 $obj1->set_fist_name(“ジェイ・シュレ”);コード行は $obj1->returnVar(); を使用して変数に値を設定します。設定された変数の値を取得できます。
パブリックやプライベートと同様に、protected 自体はクラス レベルでサポートされていません。 private 修飾子と同様に、protected もクラス外部からのクラス変数へのアクセスや関数を制限します。同一クラス内およびサブクラス(子クラス)から利用可能です。
例:
<?php class MyAccess { var $var = "This is first var"; protected $fist_name; // simple class method function returnVar() { echo $this->fist_name; } function set_fist_name($set_this){ $this->fist_name = $set_this; } } class child extends MyAccess { function setVal($set_this){ $this->fist_name = $set_this; } function getVal(){ echo $this->fist_name; } } $obj1 = new child(); //echo $obj1->fist_name; // will give the error $obj1->setVal("Jai Shre"); $obj1->getVal(); ?>
echo $obj1->fist_name;コード行では以下のエラーが発生します
出力:
致命的なエラー: E:wampwwwtwitindex.php 行 20
の保護プロパティ MyAccess::$fist_name にアクセスできませんクラス変数ではなく、クラスと関数で使用できます。いずれかのクラスに少なくとも 1 つの抽象関数がある場合、それを抽象関数として宣言する必要があります。抽象クラスをインスタンス化することはできません。抽象クラスは主に不完全なクラスとみなされます。
いずれかのクラスが最終クラスとして宣言されている場合、そのクラスを拡張することはできません。 PHP では、最終クラスの継承が制限されています。
static キーワードを使用すると、任意の関数を静的にすることができます。これにより、関数の機能が有効になり、関数が宣言されているクラスのオブジェクトの作成内でその関数を使用できるようになります。静的メソッドの例 –
public static function static Function() { // declaration goes here.. }
ビジネス要件に従って、常にアクセス修飾子を使用する必要があります。 private と protected を使用すると、宣言されたクラスの外部からのプライベート変数とプライベート メソッドの直接使用を制限できます。
以上がPHP のアクセス修飾子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。