注: クラス

WBOY
WBOYオリジナル
2016-08-08 09:32:21974ブラウズ


静的メンバーは、クラスのインスタンスではなく、クラス全体に属するとみなすことができ、この変数値はすべてのインスタンスに対して有効です。インスタンスはこの変数を共有します

$this は現在のインスタンスのみを表し、self:: はクラス自体を表し、self:: はクラス外のコードで使用できません、self:: は継承内で自分自身を識別できませんツリー階層の場所。つまり、拡張クラスで self:: スコープを使用する場合、self:: は基本クラスで宣言されたメソッドを呼び出すことができますが、常に拡張クラスでオーバーライドされたメソッドを呼び出します。 $this とは異なり、静的変数を使用する場合は、スコープ修飾子の後に $ 記号を追加する必要があります。

拡張クラスでは、基本クラスのメソッドがオーバーライドされるときに、親スコープを使用して基本クラスで定義されたメソッドを呼び出します。静的メンバーは親クラスにのみ所属できます。メンバーがサブクラスと親クラスの両方で宣言されている場合は、parent:; を使用して、サブクラス内の親クラスの変数にアクセスできます。場合によっては、親クラスの静的メンバーと子クラスの静的メンバーが異なる値を保持することがあります。
:: 演算子の左側にクラスの名前を記述して、クラスのインスタンスの作成を避けるためにメンバーに静的にアクセスできます。クラスをインスタンス化するコードが省略されるだけでなく、クラスの各インスタンスがシステム リソースのごく一部を必要とするため、さらに興味深いものになります。


:: 演算子を使用してメンバー変数にアクセスする場合は、$ 記号の使用に注意する必要があります。 PHP は現在、動的静的変数の使用をサポートしていないため、つまり、変更可能な静的変数をサポートしていません。 $this->$var を使用する場合、アクセスされるメンバーは $var に含まれる変数の値です。$ 記号を使用せずに変数にアクセスすると、実際にはクラスの定数が検索され、定数を $ に渡すことはできません。これが遊びに来ました。
PHP6 によって提案された static::scope を使用すると、self:: とparent:: を使用する必要がなくなります。関数を実装する最終クラスを指定する場合は、 static:: を使用できます。この修飾子は、コードが実行される前に継承階層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。静的変数はサブクラスでオーバーライドできます。これは、親クラスで宣言された関数から行うこともできます。

静的メソッドと非静的メソッドの重要な違い: 静的​​メソッドを呼び出すときに、クラスのインスタンスを持つ必要がなくなりました。


静的メソッドと非静的メソッドを使用するための原則: メソッドに $this 変数が含まれていない場合、クラスのインスタンスが必要ない場合は静的メソッドを使用する必要があります。静的メソッドは特定のインスタンスに属さないため、クラスのインスタンス化の作業を回避するために、静的メソッドでは $this 変数を使用できません。

Instanceof は、オブジェクトがクラスのインスタンスであるか、クラスのサブクラスであるか、インターフェイスを実装しているかを判断し、対応する操作を実行できます

クラス補助関数

boolean class_exists(string class_name)
string get_class(object object)                                 //确定对象的上下文
array get_class_methods(mixed class_name)
array get_class_vars(string class_name)                         //定义的字段
array get_declared_classes(void)                              //当前执行脚本中定义的所有类名
array get_object_vars(object object)
string get_parent_class(mixed object)
boolean interface_exists(string interface_name[, boolean autoload])
boolean is_subclass_of(object object, string class_name)
boolean method_exists(object object, string method_name)



______autoload関数、scriptで定義されていないクラスを参照するときに関数が自動的に呼び出されます

newobject= clone oldobject;コード複製操作中に実行される、オブジェクトの複製動作を調整します。

メソッドのオーバーロード、演算子のオーバーロード、多重継承はサポートされていません
以上、Note:Classの内容を含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

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