ホームページ  >  記事  >  バックエンド開発  >  PHPクラスの静的メソッドと静的変数

PHPクラスの静的メソッドと静的変数

WBOY
WBOYオリジナル
2016-07-25 09:13:36938ブラウズ
数日前、Qingyuan Education のウェブサイトでこのような記事を目にしました。これは私のような php 開発者にとって特に役立つと思います。また、Qingyuan の皆さんにも役立つことを願って投稿します。 Education の Web サイトにはこの種の技術記事がたくさんありますので、興味があればチェックしてみてください。さて、早速、本題に入りましょう:

PHP では、クラスのメソッド/変数にアクセスする方法が 2 つあります:
1. オブジェクト $object = new Class() を作成し、変数/メソッドがアクセス可能な場合は、「->」を使用して $object->attribute/function を呼び出します。
2. 静的か非静的かに関係なく、クラスのメソッド/変数 (class::attribute/function) を直接呼び出します。ただし、前提条件があります:
A. 変数の場合、その変数にアクセスできる必要があります。
B. それがメソッドの場合、メソッドがアクセス可能であることに加えて、以下を満たす必要もあります:
b1) 静的メソッドの場合、特別な条件はありません
b2) 非静的メソッドの場合は、メソッド内で $this を使用しないように変更する必要があります。つまり、非静的変数/メソッドは呼び出されません。もちろん、静的変数/メソッドを呼び出すことには問題はありません。方法。

それでは、$object->… の使用と class::…: の使用の違いを見てみましょう。 1. $object->… を使用する場合、コンストラクターを実行してオブジェクトを作成する必要があります
2. class::... を使用して、オブジェクトを作成するコンストラクターを実行せずに静的メソッド/変数を呼び出します。 3. class::... を使用して非静的メソッド/変数を呼び出します。オブジェクトを作成するためにコンストラクターを実行する必要はありません。

すると、2と3は同じなので、静的メソッド/変数の存在意義は何でしょうか? 以下に示すように、違いは依然として明らかに存在します: 1. 静的変数
静的メンバーは変数値を 1 つだけ保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのメンバーを共有します。
2. 静的メソッド
静的メソッドは class::... を使用して直接呼び出すことができますが、非静的メソッドは、前述したように、 class::... メソッドを使用して呼び出す前に特定の制限を満たす必要があります。

この記事が大多数の PHP 開発者にとって役立つことを願っています。この記事を読んでいただきありがとうございます。 php の技術的な問題について詳しくは、グループに参加して議論することを歓迎します: 256271784、検証コード: cxy、検証を書かないと合格しません~


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