ホームページ  >  記事  >  バックエンド開発  >  PHP の静的メソッドの詳細な紹介

PHP の静的メソッドの詳細な紹介

PHPz
PHPzオリジナル
2023-04-19 09:19:131109ブラウズ

PHP では、静的メソッドは特別なタイプのメソッドであり、通常のメソッドとは大きく異なります。この記事では、PHPにおける静的メソッドの概念や使い方、注意点などを詳しく紹介します。

概念

PHP では、静的メソッドとは、オブジェクトをインスタンス化せずに呼び出すことができるメソッドを指します。平たく言えば、これはインスタンス化されたオブジェクトに対する操作ではなく、クラスに対する全体的な操作です。メソッドの前に static キーワード フラグを使用して、これが静的メソッドであることを PHP インタープリタに伝えます。

#使用方法

静的メソッドを使用する場合は、いくつかの注意事項があります。

    クラス名を使用して静的メソッドを直接呼び出します
オブジェクトをインスタンス化する必要はなく、クラス名を通じて直接呼び出すことができます。

class Example {
    public static function Func(){
        echo "This is a static function!\n"
    }
}

Example::Func(); //Output: This is a static function!
    $this キーワードはメソッドでは使用できません
通常は通常のメソッドでは $ を使用します。 this キーワードはクラス内のプロパティとメソッドを参照するために使用されますが、静的メソッドではインスタンス化されたオブジェクトがないため、$this キーワードは使用できません:

class Example {
    public $name = "example";

    public static function Func(){
        echo "This is a static function! \n";
        //不能使用$this
        //echo $this->name; //错误!
    }
}
    self および static キーワードを使用できます。
静的メソッドで self および static キーワードを使用して、クラス自体と親クラスを参照できます。継承とオーバーライド

    静的メソッドは、通常のメソッドと同様に継承およびオーバーライドできます。
  1. class Example {
        public static function Func(){
            echo "This is a static function! \n";
            //使用self引用类本身
            echo "The class name is: ".self::class."\n";
        }
    }
    
    class ChildExample extends Example {
        public static function Func() {
            //使用parent关键字引用父类
            parent::Func();
            //使用static关键字引用当前类
            echo "The class name is: ".static::class."\n";
        }
    }
    
    ChildExample::Func(); 
    //Output: 
    //This is a static function! 
    //The class name is: Example
    //The class name is: ChildExample
  2. Notes

静的メソッドは静的プロパティにのみアクセスできます

#静的メソッドはオブジェクトをインスタンス化しないため、非静的プロパティにはアクセスできません:
    class Example {
        public static function Func(){
            echo "This is a static function in Example! \n";
        }
    }
    
    class ChildExample extends Example {
        public static function Func() {
            echo "This is a static function in ChildExample! \n";
            parent::Func();
        }
    }
    
    ChildExample::Func(); 
    //Output: 
    //This is a static function in ChildExample! 
    //This is a static function in Example!
  1. 静的メソッドを非静的メソッドでオーバーライドすることはできません

PHP では、静的メソッドを非静的メソッドの Override でオーバーライドすることはできません。また、非静的メソッドをオーバーライドすることもできません。これは、静的メソッドはオブジェクトではなくクラス全体に属しており、多態性を持つことができないためです。
  1. 静的メソッドの使用はできる限り少なくする必要があります

静的メソッドは非常に便利ですが、静的メソッドを過度に使用すると、保守性やスケーラビリティが損なわれます。プログラムの。したがって、大規模なプロジェクトでは静的メソッドの過度の使用を避けるように努める必要があります。
  1. 概要
静的メソッドは、オブジェクトをインスタンス化せずに直接呼び出すことができる、PHP の特別なタイプのメソッドです。静的メソッドは、self および static キーワードを使用してクラス自体と親クラスを参照できますが、$this キーワードは使用できません。静的メソッドはオブジェクトではなくクラス全体に属するため、プログラムの保守性と拡張性を確保するには、静的メソッドの使用をできるだけ少なくする必要があります。

以上がPHP の静的メソッドの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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