ホームページ >バックエンド開発 >PHPチュートリアル >PHP8.0のクラスの静的メソッドと非静的メソッドの違い

PHP8.0のクラスの静的メソッドと非静的メソッドの違い

WBOY
WBOYオリジナル
2023-05-14 08:13:351342ブラウズ

インターネット技術の継続的な発展に伴い、広く使用されている開発言語としての PHP も常に更新され、反復されています。最新の PHP8.0 バージョンでは、クラスの静的メソッドと非静的メソッドの違いにいくつかの新しい変更が加えられています。この記事では、PHP8.0のクラスの静的メソッドと非静的メソッドの違いについて詳しく紹介します。

1. クラスの静的メソッド

クラスの静的メソッドは、使用時にオブジェクトをインスタンス化する必要がなく、クラス名とメソッド名を使用して直接呼び出すことができます。PHP8.0 バージョンでは、クラス 静的メソッドの定義方法も、以前と比べて若干変更されました。以前のバージョンでは、静的メソッドを定義するには、メソッド本体の前にキーワード「static」を追加する必要がありましたが、PHP8.0 ではその必要はありません。つまり、PHP8.0 のクラスの静的メソッドは、非静的メソッドと一緒に使用できます。 . 同様に定義します。

クラスの静的メソッドは、クラス名とオブジェクト名の両方を使用して呼び出すことができますが、非静的メンバーおよびメソッドにはアクセスできません。同時に、クラスの静的メソッドはオブジェクトをインスタンス化する必要がないため、self、static、parent などのキーワードを使用してクラスのメンバーとメソッドを参照できます。

次は、クラスの静的メソッドの使用を示す簡単なサンプル コードです:

class Test {
    public static $name = 'PHP8.0';
    
    public static function printName() {
        echo self::$name;
    }
}

// 调用类的静态方法
Test::printName(); // 输出 PHP8.0

2. クラスの非静的メソッド

非静的クラスのメソッドは必ず呼び出しを行うためにオブジェクトをインスタンス化することで、クラスの静的メンバーとメソッドにアクセスできます。 PHP8.0 では、以前のバージョンと比較して、クラスの非静的メソッドを定義する方法は変わっていません。

次は、クラスの非静的メソッドの使用を示す簡単なサンプル コードです:

class Person {
    public $name;
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function getName() {
        echo $this->name;
    }
}

// 实例化对象
$person = new Person();

// 调用类的非静态方法
$person->setName('Tom');
$person->getName(); // 输出 Tom

3. クラスの静的属性

静的メソッドと非静的メソッドに加えて、PHP8.0 ではクラスの静的属性も導入されました。以前のバージョンでは静的プロパティを使用するにはクラス定義内で「static」というキーワードを使用した宣言が必要でしたが、PHP8.0ではその必要がなくなり、非静的プロパティと同様に宣言できるようになりました。同時に、クラスの静的プロパティはクラスに従うため、オブジェクトをインスタンス化せずに、任意の場所で読み取りおよび変更できます。

以下は、クラスの静的属性の使用を示す簡単なサンプル コードです:

class User {
    public static $count = 0;
    
    public function __construct() {
        self::$count++;
    }
    
    public static function getCount() {
        echo self::$count;
    }
}

// 创造对象
$newUser1 = new User();
$newUser2 = new User();

// 调用类的静态方法,获取对象数量
User::getCount(); // 输出 2

4. 概要

要約すると、PHP8.0 のクラスの違い静的メソッドと非静的メソッドの間では大きな変更はなく、定義方法が変更されただけです。同時に、PHP8.0 では、オブジェクトをインスタンス化せずにデータを保存および共有できるように、クラスの静的属性が追加されました。実際の開発では、最適な効果を得るために、特定の状況に応じてクラスの静的メソッド、非静的メソッド、または静的属性の使用を選択する必要があります。

以上がPHP8.0のクラスの静的メソッドと非静的メソッドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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