ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクト指向 (OOP) プログラミングの完全なチュートリアル: 5. オブジェクトをインスタンス化するには?

PHP オブジェクト指向 (OOP) プログラミングの完全なチュートリアル: 5. オブジェクトをインスタンス化するには?

WBOY
リリース: 2016-08-08 09:30:08
オリジナル
1087 人が閲覧しました

オブジェクト指向プログラムの単位はオブジェクトであると上で述べましたが、オブジェクトはクラスを通じてインスタンス化されます。クラスが宣言されたので、次のステップはオブジェクトをインスタンス化することです。

クラスを定義した後、new キーワードを使用してオブジェクトを生成します。

$オブジェクト名 = 新しいクラス名();


リーリー


$p1=新しい人();

このコードは、クラスを通じてインスタンス オブジェクトを生成するプロセスです。同様に、$p2 と $p3 もインスタンス化するオブジェクトの名前です。上記のコードは 3 人の人の例に相当します。これは、各人が独自の名前、性別、年齢の属性を持っていることを意味します。話したり歩いたりする方法です。クラスに反映されるメンバー属性とメンバー メソッドである限り、インスタンス化されたオブジェクトにはこれらの属性とメソッドが含まれます。

PHP のオブジェクトも整数型や浮動小数点型と同様に、さまざまな種類のデータを格納するために使用されます。では、オブジェクトはどのようにメモリに反映されるのでしょうか。論理的に言えば、メモリはスタック領域セグメント、ヒープ領域セグメント、コード領域、初期化された静的セグメントの 4 つのセグメントに分けられ、プログラム内の異なる宣言は異なるメモリ領域に配置されます。整数 1、10、100、1000 など、同じスペース長で占有スペースが小さいデータ型。 10000、100000 などはメモリ内で同じ長さのスペースを占有し、それらはすべて 64 ビットおよび 4 バイトです。 では、データ長が可変で多くのスペースを占めるデータ型のデータは、そのメモリセグメントのどこに配置すればよいのでしょうか?このようなデータはヒープ メモリに配置されます。スタック メモリには直接アクセスできますが、ヒープ メモリには直接アクセスできません。このオブジェクトの場合、それは大きなデータ型であり、可変長の領域を占有するため、オブジェクトはヒープに配置されますが、オブジェクト名はスタックに配置されるため、オブジェクトはオブジェクト名を通じて使用できます。 。

$p1=新しい人();

このコードの場合、$p1 はスタック メモリ内のオブジェクト名で、new Person() はヒープ メモリ内の実際のオブジェクトです。詳細については、次の図を参照してください。


上の図からわかるように、等号の右側は、ヒープ メモリ内のエンティティです。上の図には、 new Person() が 3 回あります。したがって、ヒープ内に 3 つのスペースが開かれ、3 つのインスタンス オブジェクトが生成されます。各オブジェクトは互いに独立しており、PHP では、新しいキーワードが出現する限り、オブジェクトがインスタンス化され、独自のスペースが使用されます。ヒープ領域で開かれます。

ヒープ内の各インスタンス オブジェクトには属性が保存されます。たとえば、ヒープ内のインスタンス オブジェクトには名前、性別、年齢が保存されます。各属性にはアドレスがあります。

$p1=new Person(); 等号 $p1 の左側は参照変数です。オブジェクトの最初のアドレスは、代入演算子 "=" によって参照変数 "$p1" に代入されます。オブジェクトの最初のアドレス $p1 は、ヒープ内のオブジェクトを指すポインターに相当するため、通常は参照変数 $p1 を介してオブジェクトを操作することもできます。オブジェクトはオブジェクトを参照します。


上記では、PHP オブジェクト指向 (OOP) プログラミングの完全なチュートリアル「5. オブジェクトをインスタンス化する方法」を紹介しています。内容の側面も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート