ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルのオブジェクト指向プログラミングを使用して大規模な PHP プロジェクトを開発する方法 4

PHP_PHP チュートリアルのオブジェクト指向プログラミングを使用して大規模な PHP プロジェクトを開発する方法 4

WBOY
WBOYオリジナル
2016-07-13 17:29:02752ブラウズ

PHP の高度な OOP テクノロジー
OOP の基本的な概念を理解した後、さらに高度なテクノロジーを紹介します。
シリアル化
PHP は永続オブジェクトをサポートしません。OOP では、永続オブジェクトは複数のアプリケーションで使用できます。参照。これは、オブジェクトをファイルまたはデータベースに保存し、後でオブジェクトをロードできることを意味します。これはいわゆるシリアル化メカニズムです。 PHP にはオブジェクトに対して呼び出すことができるシリアル化メソッドがあり、シリアル化メソッドはオブジェクトの文字列表現を返すことができます。ただし、シリアル化ではオブジェクトのメンバー データのみが保存され、メソッドは保存されません。
PHP4 では、オブジェクトを文字列 $s にシリアル化してからオブジェクトを解放し、オブジェクトを $obj に逆シリアル化すると、オブジェクトのメソッドを引き続き使用できます。これを行うことはお勧めしません。(a) ドキュメントには、この動作が将来のバージョンでも機能するという保証がないからです。 (b) これにより、シリアル化されたバージョンをディスクに保存してスクリプトを終了するときに、誤解が生じる可能性があります。文字列表現にはメソッドがまったく含まれていないため、後でこのスクリプトを実行するときに、オブジェクトを逆シリアル化するときにオブジェクトのメソッドが存在することは期待できません。
つまり、PHPのシリアル化はオブジェクトのメンバ変数を保存するのに非常に便利です。 (関連する配列や配列をファイルにシリアル化することもできます)。
例:
-------------------------------------- - ----------------------------------
$obj=new Classfoo();
$ str =serialize($obj);
// $str をディスクに保存します
// 数か月後
// str をディスクからロードします
$obj2=unserialize($str)
?>------ -- ------------------------------------------------ -- ------------------------
メンバー データは復元されましたが、メソッドは復元されませんでした (ドキュメントによると)。これにより、メンバー変数にアクセスするには $obj2->x を使用するような方法しかなくなります (他に方法はありません)。自宅では試さないでください。


この問題を解決するにはいくつかの方法がありますが、この簡潔な記事にはあまりにももったいないため、省略しました。
私は、PHP の次のバージョンで完全にシリアル化された機能を喜んで歓迎します。
前のページ 次のページ

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531730.html技術記事 PHP の高度な OOP テクノロジー OOP の基本的な概念を理解した後、さらに高度なテクノロジーを紹介します。 PHP のシリアル化は OOP では永続オブジェクトをサポートしません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。