ホームページ  >  記事  >  バックエンド開発  >  PHP クローンはオブジェクト指向プログラミングを再考します

PHP クローンはオブジェクト指向プログラミングを再考します

不言
不言オリジナル
2018-04-08 15:07:43951ブラウズ

この記事では、オブジェクト指向プログラミングを復習するための PHP クローンを紹介します。必要な友達はそれを参照してください。

PHP オブジェクトのコピー
クローン関数を使用して、新しいオブジェクトをコピーするには、すべての属性と元のオブジェクトを保持する必要があります。 window 同じですが、新しいオブジェクトである必要があります。 (新しいオブジェクトではない場合、一方のウィンドウでの変更がもう一方のウィンドウに影響するか、オブジェクト A がオブジェクト B への参照を保持しており、オブジェクト A をコピーすると、使用したいオブジェクトはオブジェクト B ではなくオブジェクトになります。 B のコピー。このとき、オブジェクト A のコピーを取得する必要があります。)

PHP Deep Copy と Shallow Copy
PHP5 以降、new 演算子は自動的に参照を返します。オブジェクトは識別子を使用して実際のオブジェクトのコンテンツにアクセスします。
ディープ コピーとは、参照オブジェクトの変数を、元の参照オブジェクトではなく、コピーされた新しいオブジェクトにのみコピーすることを指します。
PHP は 2 つの方法でディープ コピーを実装できます。 1️⃣ クローン 2️⃣ オブジェクトをシリアル化することにより、最初にオブジェクトをシリアル化し、次に逆シリアル化します。

ResumeA));

__cloneメソッドはパラメータを持たないことができ、2つのポインタが自動的に含まれますクラスとオブジェクト クラス: 同じプロパティとサービスを持つオブジェクトのコレクション。

オブジェクト: クラスのインスタンス化の結果はオブジェクトです


構築メソッド: クラス内で宣言できるコンストラクターは 1 つだけですが、コンストラクターはオブジェクトが作成されるたびに 1 回だけ呼び出されます。このメソッドはアクティブに呼び出すことはできません。したがって、通常は、いくつかの便利な初期化タスクを実行するために使用されます。たとえば、オブジェクトの作成時に、対応するプロパティに初期値が割り当てられます。

デストラクター

クラスを破棄する前に、現在の操作を実行するか、いくつかの関数を完了します

デストラクターは、オブジェクトへのすべての参照が削除されたとき、またはオブジェクトが明示的に破棄されたとき、つまりオブジェクトがメモリ内にあるときに実行されます。デストラクターが呼び出されます。破棄される前に

クラスオブジェクトは実際にはスタックの形でメモリに配置されるため、最終的にデストラクタが呼び出されるとき、後入れ先出しの原則に従います

オブジェクト指向プログラミングの3つの主要な特徴:
カプセル化の継承 ポリモーフィズム

カプセル化: オブジェクトのすべてのプロパティとすべてのサービスを組み合わせて、分割不可能な独立した単位 (オブジェクト) を形成し、情報の隠蔽、つまりオブジェクトの内部詳細を可能な限り隠す

継承 単一継承 (PHP) JAVA、C++ 派生クラスは複数の基本クラスから派生できます) 定義された新しいデータ型には、新しく定義されたメンバーだけでなく、古いメンバーも含まれます。新しいクラスの派生に使用される既存のクラスを基本クラスと呼び、親クラスやスーパークラスとも呼ばれます。既存のクラスから派生した新しいクラスは派生クラスと呼ばれ、サブクラスとも呼ばれます。

PHP のオーバーロードは、親クラスの既存のメソッドをオーバーライドするサブクラスを指します

final は、サブクラスによってオーバーライドできない属性メンバーを定義します

static および const
static は、メンバーのプロパティとメンバー メソッドが静的であることを示します。外部アクセスを制限します。静的メンバーはクラスに属し、どのオブジェクトのインスタンスにも属さないため、クラスが初めてロードされるときに割り当てられるスペースであり、他のクラスからはアクセスできません。クラスの力を共有することでしかクラスはある程度守れない。

static 静的メンバーには静的メソッドではアクセスできません。実現するには const を使用してください。

const 修飾子のメンバー プロパティへのアクセス メソッドは、静的変更済みメンバーのアクセス メソッドと同様であり、クラス名を使用し、メソッド内で self を使用します。 、ただし、$ を使用する必要はありません オブジェクトを使用してシンボルにアクセスすることはできません

オブジェクトをシリアル化する

オブジェクトをシリアル化する必要がある状況は 2 つあります。1 つ目は、ネットワーク上でオブジェクトを送信するときにオブジェクトをシリアル化することです。 2 番目の状況は、オブジェクトをファイルまたはデータベースに書き込むときにシリアル化を使用することです。


serialize() 関数のパラメータはオブジェクト名で、戻り値は文字列です。

オブジェクトをシリアル化するとき、__sellp --- (この時点で一部のメンバー属性を非表示にすることができます) メソッドが自動的に実行されます。 逆シリアル化は、__wakup() --- (この時点で値を割り当てることができます) を実行することです。方法。

__sleep() 関数はパラメーターを受け入れませんが、シリアル化する必要がある属性を含む配列を返します。含まれていない属性はシリアル化中に無視されます。 __sleep() メソッドがない場合、PHP はすべての属性を保存します。

php オブジェクトのコピー

clone 関数、新しいオブジェクトをコピーします。すべてのプロパティは元のウィンドウと同じに保つ必要がありますが、それは新しいオブジェクトである必要があります。 (新しいオブジェクトではない場合、一方のウィンドウでの変更がもう一方のウィンドウに影響するか、オブジェクト A がオブジェクト B への参照を保持しており、オブジェクト A をコピーすると、使用したいオブジェクトはオブジェクト B ではなくオブジェクトになります。 B のコピー。この時点で、オブジェクト A のコピーを取得する必要があります。)

PHP ディープコピーとシャローコピー
PHP5 以降、new 演算子は自動的に参照を返すようになりました。オブジェクトは識別子を使用して実際のオブジェクトのコンテンツにアクセスします。
ディープ コピーとは、参照オブジェクトの変数を、元の参照オブジェクトではなく、コピーされた新しいオブジェクトにのみコピーすることを指します。
PHP は 2 つの方法でディープ コピーを実装できます。 1️⃣ クローン 2️⃣ オブジェクトをシリアル化することにより、最初にオブジェクトをシリアル化し、次に逆シリアル化します。

ResumeA));

__cloneメソッドにはパラメータを含めることはできません。2つのポインタが自動的に含まれますクラスとオブジェクト クラス: 同じプロパティとサービスを持つオブジェクトのコレクション。

オブジェクト: クラスのインスタンス化の結果はオブジェクトです。


コンストラクター メソッド: クラス内で宣言できるコンストラクターは 1 つだけですが、コンストラクターはオブジェクトが作成されるたびに 1 回だけ呼び出されます。このメソッドはアクティブに呼び出すことはできません。したがって、通常は、いくつかの便利な初期化タスクを実行するために使用されます。たとえば、オブジェクトの作成時に、対応するプロパティに初期値が割り当てられます。

デストラクター

クラスを破棄する前に、現在の操作を実行するか、いくつかの関数を完了します

デストラクターは、オブジェクトへのすべての参照が削除されたとき、またはオブジェクトが明示的に破棄されたとき、つまりオブジェクトがメモリ内にあるときに実行されます。デストラクターが呼び出されます。破棄される前に

クラスオブジェクトは実際にはスタックの形でメモリに配置されるため、最終的にデストラクタが呼び出されるとき、後入れ先出しの原則に従います

オブジェクト指向プログラミングの3つの主要な特徴:
カプセル化の継承 ポリモーフィズム

カプセル化: オブジェクトのすべてのプロパティとすべてのサービスを組み合わせて、分割不可能な独立した単位 (オブジェクト) を形成し、情報の隠蔽、つまりオブジェクトの内部詳細を可能な限り隠す

継承 単一継承 (PHP) JAVA、C++ 派生クラスは複数の基本クラスから派生できます) 定義された新しいデータ型には、新しく定義されたメンバーだけでなく、古いメンバーも含まれます。新しいクラスの派生に使用される既存のクラスを基本クラスと呼び、親クラスやスーパークラスとも呼ばれます。既存のクラスから派生した新しいクラスは派生クラスと呼ばれ、サブクラスとも呼ばれます。

PHP のオーバーロードは、親クラスの既存のメソッドをオーバーライドするサブクラスを指します

final は、サブクラスによってオーバーライドできない属性メンバーを定義します

static および const
static は、メンバーのプロパティとメンバー メソッドが静的であることを示します。外部アクセスを制限します。静的メンバーはクラスに属し、どのオブジェクトのインスタンスにも属さないため、クラスが初めてロードされるときに割り当てられるスペースであり、他のクラスからはアクセスできません。クラスの力を共有することでしかクラスはある程度守れない。

static 静的メンバーには静的メソッドではアクセスできません。実現するには const を使用してください。

const 修飾子のメンバー プロパティへのアクセス メソッドは、静的変更済みメンバーのアクセス メソッドと同様であり、クラス名を使用し、メソッド内で self を使用します。 、ただし、$ を使用する必要はありません オブジェクトを使用してシンボルにアクセスすることはできません

オブジェクトをシリアル化する

オブジェクトをシリアル化する必要がある状況は 2 つあります。1 つ目は、ネットワーク上でオブジェクトを送信するときにオブジェクトをシリアル化することです。 2 番目の状況は、オブジェクトをファイルまたはデータベースに書き込むときにシリアル化を使用することです。


serialize() 関数のパラメータはオブジェクト名で、戻り値は文字列です。

オブジェクトをシリアル化するとき、__sellp --- (この時点で一部のメンバー属性を非表示にすることができます) メソッドが自動的に実行されます。 逆シリアル化は、__wakup() --- (この時点で値を割り当てることができます) を実行することです。方法。

__sleep() 関数はパラメーターを受け入れませんが、シリアル化する必要がある属性を含む配列を返します。含まれていない属性はシリアル化中に無視されます。 __sleep() メソッドがない場合、PHP はすべての属性を保存します。

関連する推奨事項:


PHP における引用とクローンの詳細な説明

以上がPHP クローンはオブジェクト指向プログラミングを再考しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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