PHP のアクセス修飾子

PHPz
リリース: 2024-08-29 13:06:31
オリジナル
1008 人が閲覧しました

アクセス修飾子は、他の PHP 識別子の変数に対するアクセシビリティのスコープと権限を設定する方法です。 PHP は、任意の変数と識別子にアクセスできるようにするためのさまざまなキーワードをサポートしています。これらのキーワードをクラス、関数、または識別子に割り当てることができます。これらのキーワード – public、private、protected、abstract、final など

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

PHP でアクセス修飾子を使用する場合は?

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 のさまざまなアクセス修飾子

以下に挙げる PHP のアクセス修飾子は次のとおりです

1.パブリックアクセス修飾子

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 言語のデフォルトの修飾子であるため、パブリックとして機能します。

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";
}
?>
ログイン後にコピー

2.プライベートアクセス修飾子

この修飾子では、プライベート キーワードを使用して処理します。 クラスでは 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(); を使用して変数に値を設定します。設定された変数の値を取得できます。

3.保護されたアクセス修飾子

パブリックやプライベートと同様に、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 にアクセスできません

4.抽象アクセス修飾子

クラス変数ではなく、クラスと関数で使用できます。いずれかのクラスに少なくとも 1 つの抽象関数がある場合、それを抽象関数として宣言する必要があります。抽象クラスをインスタンス化することはできません。抽象クラスは主に不完全なクラスとみなされます。

5.最終アクセス修飾子

いずれかのクラスが最終クラスとして宣言されている場合、そのクラスを拡張することはできません。 PHP では、最終クラスの継承が制限されています。

6.静的アクセス修飾子

static キーワードを使用すると、任意の関数を静的にすることができます。これにより、関数の機能が有効になり、関数が宣言されているクラスのオブジェクトの作成内でその関数を使用できるようになります。静的メソッドの例 –

public static function static Function()
{
// declaration goes here..
}
ログイン後にコピー

結論

ビジネス要件に従って、常にアクセス修飾子を使用する必要があります。 private と protected を使用すると、宣言されたクラスの外部からのプライベート変数とプライベート メソッドの直接使用を制限できます。

以上がPHP のアクセス修飾子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート