ホームページ >バックエンド開発 >PHPチュートリアル >PHP5 オブジェクト指向プログラミング_PHP チュートリアル

PHP5 オブジェクト指向プログラミング_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:53:31949ブラウズ

PHP5 には、この章で後ほど詳しく説明する、単一継承、アクセス制限付きのオーバーロード可能なオブジェクト モデルがあり、さらに、PHP では、プロパティとメソッドのアクセス制限がサポートされています。最後に、PHP では、サブクラスがその親クラスからのメンバーをオーバーロードすることができます。PHP では、PHP では他のデータ型とは異なる方法でオブジェクトを処理します。参照ベースのオブジェクト モデルについては、この章の最後で詳しく説明します

より直接的です オブジェクト モデルには、次のような追加の利点があります。効率、メモリ使用量の削減、柔軟性の向上

以前のバージョンの PHP では、スクリプトはデフォルトでオブジェクトをコピーしていましたが、PHP 5 では更新が必要なため、スクリプトの実行効率が向上しました。オブジェクト システムは複雑さをもたらしますが、同時に、コピーを削減することで、より多くのメモリを他の操作に確保できるようになり、効率の向上にもつながります。エンジン 2 は柔軟性が高く、破棄が可能です。これは、オブジェクトが破棄される前にクラス メソッドを実行することにより、PHP がオブジェクトへの参照がないことを明確に認識し、空き領域を割り当てることができるようになります。

補足:

PHP5のメモリ管理

オブジェクトの受け渡し



PHP5の使用 Zend Engine IIでは、オブジェクトは他の一般的な変数のようにZvalに保存されるのではなく、別の構造のオブジェクトストアに保存されます。 (PHP4 では、オブジェクトは一般変数と同様に Zval に格納されます)。オブジェクトの内容 (値) ではなく、オブジェクトのポインターのみが Zval に格納されます。オブジェクトをコピーする場合、またはオブジェクトをパラメーターとして関数に渡す場合、データをコピーする必要はありません。同じオブジェクト ポインタを保持し、別の zval がこの特定のオブジェクトが現在指していることをオブジェクト ストアに通知させます。オブジェクト自体はオブジェクト ストアに配置されているため、オブジェクトに加えた変更は、そのオブジェクトへのポインタを保持するすべての zval 構造に影響します。これは、ターゲット オブジェクトに対する変更がソース オブジェクトに影響するため、プログラムに明示されています。これにより、PHP オブジェクトは常に参照によって渡されるように見えるため、PHP のオブジェクトはデフォルトで「参照」によって渡され、PHP4 のように & を使用してオブジェクトを宣言する必要がなくなりました。



ガベージ コレクション メカニズム

一部の言語 (最も一般的には C) では、データ構造を作成するときに明示的にメモリ割り当てを要求する必要があります。メモリを割り当てたら、情報を変数に保存できます。同時に、変数の使用が終了したときにメモリを解放する必要もあります。これにより、マシンは他の変数用にメモリを解放し、メモリ不足を避けることができます。

PHP は自動的にメモリを管理し、不要になったオブジェクトを消去できます。 PHP は、単純なガベージ コレクション メカニズムである参照カウントを使用します。各オブジェクトには参照カウンタが含まれており、オブジェクトに接続されている参照ごとにカウンタが 1 ずつ増加します。参照がリビング スペースから出るか、NULL に設定されると、カウンターは 1 ずつ減らされます。オブジェクトの参照カウンタがゼロになると、PHP はこのオブジェクトを使用する必要がなくなったことを認識し、そのオブジェクトが占有しているメモリ領域を解放します。

例:




コードをコピーします

コードは次のとおりです:class Person{
}
function sendEmailTo(){
}

$haohapp y = new Person ();
// 新しいオブジェクトの作成: 参照カウント = 1
$haohappy2 = $haohappy;
//参照によるコピー: 参照カウント = 2
unset($haohappy);
// 参照の削除: 参照カウント = 1
sendEmailTo( $haohappy2);
// オブジェクトの参照渡し:
// 関数実行中:
// 参照カウント = 2
// 実行後:
// 参照カウント = 1

unset($haohappy2) ; // 参照の削除: 参照カウント = 0 メモリ空間を自動的に解放します

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318700.html技術記事 PHP5 には、単一継承のアクセス制限されたオーバーロード可能なオブジェクト モデルがあり、この章で後ほど詳しく説明しますが、PHP はプロパティとメソッドの制限をサポートします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。