PHP のプライベート

WBOY
WBOYオリジナル
2024-08-29 13:08:07904ブラウズ

キーワードは、プログラム内で予備として使用され、特別な意味が割り当てられた単語です。コマンドまたはパラメータにすることができます。他のプログラミング言語と同様に、PHP にもキーワードと呼ばれる特別な単語のセットがあり、他の目的で変数名として使用することはできません。これらは予約名とも呼ばれます。

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

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

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

プライベート キーワードは、その名前が示すように、それが定義されているクラス内からのみアクセスできるキーワードです。すべてのキーワードは、プライベートまたは保護として指定されていない限り、デフォルトでパブリック カテゴリに含まれます。プライベート キーワードは、コード全体でキーワードの可視性を最小限に抑えることで、セキュリティ目的に役立ちます。このキーワードを呼び出すクラスが 1 つだけの場合も、リフラクタリングが簡単になります。

プライベート キーワードとは別に、プライベート メソッドも存在する場合があります。オブジェクト指向プログラミングでは、メソッドは任意のクラスに関連付けられたプロシージャのセットです。プライベート メソッドの場合、同じクラスまたはそのモジュールに属するメソッド内でのみ呼び出すことができます。

宣言できるプライベート定数とプロパティもあります。このような場合の可視性は、インスタンス間ではなくクラス間でのみ制限されます。 2 つのオブジェクトが同じ型の場合、一方のオブジェクトは別のオブジェクトのプライベート メソッドを呼び出すことができます。

構文:

変数、プロパティ、またはメソッドは、先頭に「private」キーワードを付けることでプライベートとして宣言できます。

class MyClass()
{
private variable_name;
private Method_name();
private $priv = 'Private property';
}

私有財産の例

以下の例を使用して、PHP でのプライベート プロパティの仕組みを理解してみましょう:

コード:

<?php
/**
* Definition of PHPExample
*/
class PHPExample
{
public $public = 'Public property';
protected $protected = 'Protected property';
private $private = 'Private property';
function displayValue()
{
echo $this->public;
echo "\n";
echo $this->protected;
echo "\n";
echo $this->private;
echo "\n";
}
}
$val = new PHPExample();
echo $val->public; // Public will work without any error
echo "\n";
echo $val->protected; // Uncaught Error: Cannot access protected property PHPExample::$protected in /workspace/Main.php:21
echo $val->private; // Uncaught Error: Cannot access private property PHPExample::$private in /workspace/Main.php:22
$val->displayValue(); // Displays all 3 Public, Protected and Private properties
/**
* Definition of PHPExample2
*/
class PHPExample2 extends PHPExample
{
// It supports redeclaration of public and protected properties and not private
public $public = 'Public2 property';
protected $protected = 'Protected2 property';
function displayValue()
{
echo $this->public;
echo "\n";
echo $this->protected;
echo "\n";
echo $this->private; //Undefined property: PHPExample2::$private in /workspace/Main.php on line 39
}
}
$val2 = new PHPExample2();
echo $val2->public; // Public will work without error
echo "\n";
echo $val2->protected; // Fatal Error
echo $val2->private; // Undefined property: PHPExample2::$private in /workspace/Main.php on line 46
$val2->displayValue(); // Shows Public2, Protected2, Undefined
?>

出力 1:

PHP のプライベート

出力 2: 23 行目のコメント後。

PHP のプライベート

出力 3: 24 行目のコメント後。

PHP のプライベート

出力 4: 行 46、47、および 40 のコメント後。

PHP のプライベート

上記のコードの説明: このコード全体を実行すると、行:25、26、45、52、53 のようないくつかの行番号で致命的なエラーが発生するはずです。まず、メイン クラス PHPExample で 3 つのプロパティ public、private、protected をすべて宣言して、それぞれの単語を表示します。インライン 25 では、PHPExample クラスから 3 つのプロパティすべてにアクセスしようとしています。プライベート サンプルと保護されたサンプルにはクラス外からアクセスできないため、次のような出力で致命的なエラーが発生し、パブリック プロパティのみが表示されます。

コードの後半では、別のクラス PHPExample2 を宣言し、保護されたプロパティとパブリック プロパティの表示値を再宣言しています。プライベートでは同じことは許されず、前半と同じ動作を行っています。ここで宣言されていないプライベートプロパティを呼び出そうとしているため、未定義プロパティエラーが発生します。

プライベートメソッドとキーワードの例

以下の例を使用して、PHP のプライベート メソッドとキーワードの動作を理解しましょう。

コード:

<?php
class NameExample {
// Declaring first name as private value
private $first_name;
// Declaring last name as private value
private $last_name;
public $public = 'Displaying from public method';
private $private ='Displaying from private method';
// private function for setting the value for first_name
private function fName($first_name) {
$this->$first_name = $first_name;
echo $this -> private;
}
// public function for setting the value for last_name
public function lName($last_name) {
$this->$last_name = $last_name;
echo $this -> public;
}
// public function to display full name value
public function dispName() {
echo "My name is: " . $this->$first_name . " " . $this->$last_name;
}
}
// Creating a new object named $arun of the class
$arun = new NameExample();
// trying to access private class variables
$arun->$first_name = "Arun"; // invalid
$arun->$last_name = "Sharma"; // invalid
// calling the public function to set $first_name and $last_name
$john->fName("John");
$arun->lName("Wick");
// $arun-> dispName();
?>

出力 1:

PHP のプライベート

出力 2: 行 32、33、および 36 をコメント化した後。

PHP のプライベート

上記コードの説明: 上記の例では、$first_name と $last_name はクラス NameExample のプライベート変数として宣言されているため、クラス オブジェクトを使用して直接呼び出すことはできません。したがって、最初にコードを実行しようとすると、「未定義の変数: /workspace/NameExample.php の 32 行目の first_name」というエラーが発生し、33 行目でも同様です。これらの 2 行にコメントを付けてコードを再度実行すると、 「Uncaught Error: Call to a member function name() on null in /workspace/NameExample.php:36」というエラーが発生します。

これは、関数 fName をプライベートとして宣言し、同じものにアクセスしようとしているためです。 36行目もコメント化してパブリックメソッドなのでメソッド名から表示するとコードはスムーズに動作します。

PHP で Private を使用する利点

PHP で Private を使用する利点は次のとおりです:

  1. プライベート変数には、「ゲッター」と「セッター」を使用して引き続きアクセスできます。これにより、コーダーはデータへのアクセスをより詳細に制御できます。
  2. プライベート インターンとは、変数をあるクラスから別のクラスに分離するカプセル化を意味し、クラスに加えられた変更を内部的に保護します。
  3. プライベート変数の動作はその特定のクラス内に制限されており、混乱も避けられます。
  4. プライベート変数は、コードを破損するリスクなしに簡単に再実装できます。

PHP のプライベートに関するルールと規制

以下は、PHP のプライベートに関して従うべきルールと規制です:

  1. 変数メンバーまたはメソッドについては、それが public、protected、または private のいずれに属するかについて、常にそのスコープを宣言する必要があります。
  2. メソッドの順序は次の順序に従う必要があります: public,>保護されています >プライベート
  3. プライベート変数は、宣言されているメインクラスから拡張して宣言されたサブクラスからはアクセスできません。ただし、同じプライベート プロパティがサブクラスで再度宣言されている場合はアクセスできますが、そうすることはお勧めできません。
  4. したがって、クラス内で宣言されたプライベート メソッドは、そのクラス内でのみ呼び出すことができます。

結論

プライベートは、クラスの変数、メソッド、またはプロパティへのアクセスを制限する方法です。これらは、宣言されたクラス内でのみアクセスでき、そこから拡張されたサブクラスからはアクセスできません。親クラスの保護されたプロパティはサブクラスでオーバーライドしてパブリックにすることができますが、プライベートにすることはできません。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。