ホームページ >バックエンド開発 >PHPチュートリアル >PHP 静的メンバー関数の効率性の問題の分析

PHP 静的メンバー関数の効率性の問題の分析

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 11:15:041318ブラウズ

多くの PHP 開発者は、クラスの通常のメンバー関数を使用するよりも、クラスの静的メンバー関数を使用する方が効率的であることを知っています。この記事では、この問題をアプリケーション レベルから分析します例を次に示します。

上記の例を見ると、興味深い点がわかります。 secho1() が静的メソッドとして定義された後も、動的クラスのオブジェクト インスタンス内で動的メソッドとして参照でき、secho3() は可能です。静的メンバー関数としても使用できるため、このレベルから、静的メンバー関数が動的メンバー関数より高速である理由を理解するのは難しくありません。

おそらく互換性の理由から、
PHP のクラス メンバーは動的と静的と明確に区​​別されておらず、明示的に宣言することなくすべてのメンバーは静的メンバーとみなされ、特定のメモリ領域に格納されます。そのため、静的はメンバー関数と呼ばれます。通常の関数を非常に高速に呼び出します。

しかし、動的クラスの呼び出しは異なります。このクラス構造をサンプルとして使用して、

オブジェクトインスタンスをメモリ内に再生成します。そのため、これは単純なクラスにとっては大したことではないかもしれません。複雑なクラスの場合、これは明らかに効率に影響します。

実際、上記の分析から、静的メソッドを宣言しなくても、システムはメンバーを静的として扱うことがわかります。完全に静的なメソッドを持つクラスと、動的であるがインスタンス オブジェクトを宣言していない完全なクラスは、ほぼ同じメモリを占有するため、より直接的なロジックの場合は、もちろん、一部の複雑なメソッドやオブジェクトに対しては、静的な

メンバー メソッドを直接使用することをお勧めします。 -指向のロジックでは、静的クラスを完全に使用することも可能ですが、その場合、クラスの意味が失われます。使用方法によれば、静的メソッドは論理クラスに特に適しています。 MVCパターン。

以上がPHP 静的メンバー関数の効率性の問題の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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