ホームページ  >  記事  >  バックエンド開発  >  PHPにプライベート静的メソッドを持たせることはできますか?

PHPにプライベート静的メソッドを持たせることはできますか?

青灯夜游
青灯夜游オリジナル
2021-06-02 18:52:192217ブラウズ

php は静的メソッドをプライベートにできます。静的プライベート メソッドは、静的コードをクラスの外部から隠す方法を提供します。これは、複数の異なるメソッド (静的または非静的) でそれを使用する必要がある場合、つまりコードの再利用に役立ちます。

PHPにプライベート静的メソッドを持たせることはできますか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

静的とはオブジェクトを意味することを理解しています。インスタンス化により、このプロパティ/メソッドが使用可能になる必要はありません。また、これはパブリック メソッドだけでなくプライベート プロパティやメソッドにも適用されることも理解しています。私が知りたいのは、静的プライベート関数がどのようなメリットをもたらすのかということです。例:

class Beer {
    static private $beertype = "IPA";
    private function getBeerType() {
            return self::$beertype;
    }
    static public function BeerInfo() {
            return self::getBeerType();
    }
}
print Beer::BeerInfo() . "\n";

getBeerType() が静的パブリック メソッドから呼び出される限り、プライベート メソッドはオブジェクトをインスタンス化せずに正常に実行されます。静的パブリック メソッドがすべてのプライベート メソッド (静的および非静的) にアクセスできる場合、メソッドを静的プライベートとして宣言する利点は何でしょうか?

厳密なエラー報告をオンにすると、getBeerType() を静的にする必要があるという警告が表示されますが、コードを実行することはできます。少し調べてみたところ、他の言語 (Java) では、静的なパブリック メソッドが呼び出されるときに、プライベート メソッドを静的として宣言するよう強制されるようです。 PHP を使用すると、この問題を回避できるようです。強制的にエラーをスローさせて実行しないようにする方法はありますか?

静的プライベート メソッドは、静的コードをクラスの外部から隠す方法を提供します。これは、コードの再利用など、いくつかの異なるメソッド (静的または非静的) でそれを使用する必要がある場合に便利です。

静的メソッドと静的変数 (クラス メソッドやクラス変数とも呼ばれます) は、コードとデータを名前空間に配置する方法です。クラス変数は、クラス自体に付加された変数であると考えることもできます。クラスのインスタンスは 0、1、またはそれ以上存在するのに対し、(定義上) 変数は 1 つだけ存在します。クラス メソッドとクラス変数を使用すると、すべてのインスタンスで同じであるだけでなく、実際に同じであるプロパティを操作できます。

クラス変数の例は、ORM エンティティ オブジェクトのデータベース ハンドラーです。すべてのインスタンスは独自のオブジェクトですが、インスタンス自体をロードおよび保存するには、すべて同じデータベース ハンドラーにアクセスする必要があります。

プライベートとパブリックはまったく別の性質です。何かでつまずいているのではないかと思います。クラス外のコードからプライベート メソッドを呼び出したり、プライベート変数にアクセスしたりすることはできません。プライベート メソッドは通常、オブジェクトの外部からアクセスできないオブジェクトに「内部」ロジックを実装するために使用されます。この制限は、インスタンス メソッドとクラス メソッドを通じて実現できます。

プライベート クラス メソッドの例としては、ファクトリ メソッドがあります。オブジェクトを作成するために、指定された引数の点で異なるファクトリ呼び出しが 3 つある場合があります。ただし、ほとんどの操作は同じです。したがって、非プライベート ファクトリ メソッドによって呼び出されるプライベート静的メソッドに入ります。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPにプライベート静的メソッドを持たせることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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