ホームページ >バックエンド開発 >PHPの問題 >PHP の親クラスのプライベート メソッドについて話しましょう

PHP の親クラスのプライベート メソッドについて話しましょう

PHPz
PHPzオリジナル
2023-04-03 16:14:13703ブラウズ

PHP は、Web アプリケーションの開発によく使用される、非常に人気のあるサーバーサイド スクリプト言語です。 PHP では、プロパティとメソッドを持つクラスを定義できます。クラス メソッドのアクセス修飾子には、public、private、および protected が含まれます。このうち、public はクラス外からこのメソッドにアクセスできることを意味しますが、protected と private はアクセスできません。

継承関係では、サブクラスは親クラスのパブリック メソッドとプロパティを継承できますが、サブクラスは親クラスのプライベート メソッドを継承できません。この記事では、PHP 親クラスのプライベート メソッドに関する関連問題について説明します。

まず、プライベート メソッドを理解する必要があります。

プライベート メソッドとは、クラス内でのみアクセスでき、クラスまたはサブクラスの外部からはアクセスできないメソッドを指します。 PHP では、メソッドの前に private を追加することでプライベート メソッドを定義できます。例:

class ParentClass {
    private function privateMethod() {
        // some code here
    }
}

この例では、privateMethod() は、ParentClass クラスでのみアクセスできるプライベート メソッドです。クラス外またはサブクラス内でこのメソッドにアクセスしようとすると、エラーが報告されます。

サブクラスを定義すると、サブクラスは親クラスのパブリックおよびプロテクトされたメソッドとプロパティを継承します。ただし、親クラスのプライベート メソッドの場合、サブクラスはそれらを継承できません。これは、継承が is-a 関係であるのに対し、プライベート メソッドは has-a 関係に属しているためです。

以下は例です:

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
    }
}

class ChildClass extends ParentClass {
    // some code here
}

$childObj = new ChildClass();
$childObj->protectedMethod(); // This is a protected method.
$childObj->privateMethod(); // Fatal error: Call to private method ParentClass::privateMethod() from context...

この例では、プライベート メソッド privateMethod() と保護メソッド protectedMethod() を含む ParentClass クラスを定義します。また、ParentClass クラスを継承する ChildClass クラスも定義します。

子クラスで保護されたメソッド protectedMethod() を呼び出すと正常に動作しますが、親クラスのプライベート メソッド privateMethod() を呼び出そうとすると致命的なエラーが発生します。

それでは、サブクラス内の親クラスのプライベート メソッドにアクセスするにはどうすればよいでしょうか? 1 つの方法は、親クラスの public メソッドまたは protected メソッドを使用して private メソッドを呼び出すことです。

例:

class ParentClass {
    private function privateMethod() {
        echo "This is a private method.";
    }
    
    protected function protectedMethod() {
        echo "This is a protected method.";
        $this->privateMethod(); // call private method
    }
}

class ChildClass extends ParentClass {
    public function publicMethod() {
        $this->protectedMethod(); // call protected method
    }
}

$childObj = new ChildClass();
$childObj->publicMethod(); // This is a protected method. This is a private method.

この例では、親クラスの保護されたメソッドでプライベート メソッドを呼び出し、サブクラスでパブリック メソッド publicMethod() を定義します。メソッド protectedMethod()。サブクラスの publicMethod() メソッドを呼び出すと、「これは保護されたメソッドです。これはプライベート メソッドです。」と出力されます。

概要

PHP では、プライベート メソッドは、クラス内でのみアクセスできます。子クラスは親クラスのプライベート メソッドを継承できませんが、親クラスにパブリック メソッドまたはプロテクト メソッドを含めることによってアクセスできます。つまり、予期しないエラーを避けるために、継承時に親クラスのプライベート メソッドへのアクセスに注意する必要があります。

以上がPHP の親クラスのプライベート メソッドについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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