ホームページ >バックエンド開発 >PHPチュートリアル >PHP5 オブジェクト指向プログラミング_PHP チュートリアル
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 はこのオブジェクトを使用する必要がなくなったことを認識し、そのオブジェクトが占有しているメモリ領域を解放します。
例:
コードをコピーします