PHPで保護されています

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

キーワードは基本的に、特定の目的のためにあらゆるプログラミング言語で予約されている特別な単語のセットです。これらはコマンドまたはパラメータのいずれかであり、変数名のように一般的に使用することはできません。 PHP で保護されたものは、PHP を含むすべての言語で事前定義されており、予約名とも呼ばれます。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

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

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

PHP には 5 種類のアクセス修飾子があります:

  • 公開
  • プライベート
  • 保護されています
  • 要約
  • 決勝

この記事では、保護されたアクセス修飾子のみに焦点を当てます。変数とは別に、保護されたキーワードは、メソッド/関数およびプロパティを保護として宣言するためにも使用されます。明示的に指定しない限り、すべての変数とメソッドはデフォルトでパブリックになります。保護された変数は、その変数へのアクセスが宣言されているクラスに制限されるため、それぞれの変数またはメソッドの可視性が低下します。保護されたアクセス修飾子はクラスに適用できません。

ただし、親クラスから継承されたサブクラスから呼び出すことはできます。したがって、「protected」キーワードを接頭辞として付けることで、必要なメソッドまたは変数を保護されたものとして宣言できます。

構文

<?php
//declaration of protected variable
protected $<variable_name> = value;
//declaration of protected property
protected $proc = 'protected property';
//declaration of protected function
protected function function_name(){
//PHP code goes here
}
?>
ログイン後にコピー

ここでは、protected キーワードを使用して変数名と関数名の両方を宣言していることがわかります。

PHP における protected 修飾子の働き: private アクセス修飾子と同様に、クラス外部のクラス関数や変数の使用とアクセスを制限するために protected を使用することもできます。ただし、プライベート変数から保護される場合の 1 つの例外は、サブクラス内の親クラスからの継承を通じてアクセスできることです。

保護された変数とメソッドの例

以下の簡単な例を使用して、保護された修飾子の使用法と動作を詳しく理解してみましょう:

例 #1

コード:

<?php
// Declaration of Main class
class Math {
protected $a = 30;
protected $b = 10;
// Declaration of division function
function division()
{
echo $div=$this->a/$this->b;
echo "\n";
}
protected function multiply()
{
echo $mul=$this->a*$this->b;
echo "\n";
}
}
// Declaration of child class addn inherited from above class
class addn extends Math {
// Declaration of addition function
function addition()
{
echo $division=$this->a+$this->b;
}
}
$obj= new addn;
$obj->division();
$obj->addition();
$obj->multiply();
?>
ログイン後にコピー

出力:

PHPで保護されています

保護されたメソッドを呼び出そうとしている行 29 にコメントを付けた後

PHPで保護されています

上記の例では、加算、除算、乗算などのさまざまな数学演算を紹介しています。まず、アクセス修飾子を付けずに Division() 関数を宣言しています。したがって、デフォルトでは、これはパブリックであり、変数 a と b の両方に対して実行している除算値は、オブジェクトを作成して関数を呼び出すときに出力に表示されます。しかし、保護された関数 multiply() を呼び出そうとすると、保護されたメソッドを呼び出すことができないというエラー インライン 34 が表示されます。

ここで、示されているように、継承を介して保護されたメソッドを呼び出して値を取得できます。ここで、子クラスは親クラス Math から継承されているため、保護された変数 a と b をエラーなく呼び出すことができます。

例 #2

コード:

<?php
class Animal {
// Declaration of protected variable $animal
protected $animal = array("Dog", "Cat", "Cow");
// Declaration of protected function for Animal description
protected function getDescription($animal) {
if($animal == "Dog") {
echo "Dogs are the most loyal animals";
}
else if($animal == "Cat") {
echo "Cats are very smart";
}
else if($animal == "Cow") {
echo "Cows are worshipped in India";
}
}
}
// Declaration of sub class of above Animal class
class Dog extends Animal {
protected $animal = "Dog";
// Declaration of public function to print dog's description
public function getDogDescription() {
// Here we call the protected getDescription() method of parent class Animal
$this->getDescription($this->animal);
}
}
// Creating an object of class Animal
$animal = new Animal();
// Creating an object of subclass Dog
$dog = new Dog();
/*
Trying to access protected variables and methods
*/
echo $animal->animal; // Cannot be accessed
$animal->getDescription("Dog"); // Cannot be accessed
echo $dog->animal; // Cannot be accessed
/*
We can call getDogDescription method,
in which we are calling a protected method
of Animal class
*/
$dog->getDogDescription();
?>
ログイン後にコピー

出力:

PHPで保護されています

34 行目のコメント後

PHPで保護されています

行 35 と 36 をコメントした後

PHPで保護されています

この例では、最初にメインの親クラス Animal を宣言し、保護された変数を $animal として初期化します。これは 3 つの異なる動物の名前を含む配列です。次に、配列内の各動物に一意の説明を与える保護された関数も宣言しています。

保護された変数にはサブクラスを使用してアクセスできるため、ここでは親クラス Animal から別のサブクラス Dog を作成します。また、パブリック関数がどこからでもアクセスできることを示すために、変数 Dog の説明を出力するパブリック関数を宣言します。

次に、Animal クラスと Dog クラスの両方のオブジェクトを作成し、保護されているそれらの変数へのアクセスを試みます。したがって、行 40、41、および 42 では、保護されたプロパティ/メソッド/変数にアクセスできないことを伝える致命的なエラーが発生します。したがって、すべてが保護されているため、Animal クラスの外部の変数にはアクセスできません。

PHP における Protected の重要性

  • protected 修飾子は基本的に変数/メソッドの可視性を低下させるため、どこからでもアクセスできるパブリック アクセス修飾子よりも安全です。
  • 保護されたメソッドにアクセスできるのはサブクラスのみであり、どのクラスからもアクセスできません。
  • クラスを保護されたものとして作成すると、クラスの有用性が非常に明確になります。これは、大量のデータがあり、これに明確なマークを付ける必要がある場合に非常に役立ちます。
  • 保護された変数とメンバーは、それらが宣言されているクラスに対してパブリックであり、親クラスからこのプロパティを継承する子クラスでもあります。
  • これは、最も安全な private より 1 つ少ない第 2 レベルのセキュリティを提供し、それほど安全ではない public 修飾子の次に提供されます。
  • これは、開発者が共有可能なメンバーと共有不可能なメンバーを説明し、クラスの壁内にそれらを制限するのに役立ちます。

結論

したがって、保護された変数は、クラス内で特別に定義された変数、メソッド、プロパティを制御するために使用されるアクセス修飾子です。プレフィックスを付けて明示的に指定する必要があるため、宣言されたパッケージ内で、および親パッケージから継承するサブクラスによってのみアクセスできます。

以上がPHPで保護されていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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