PHP 5対象プログラム設計


PHP 5はシングルで継承されており、アクセス制限の対象モデルがあります。 この章は後ほど詳細に検討します。 また、PHPは属性と方法に対する制限的なアクセスをサポートしています。 メンバーがprvateであることを宣言してもいいです。外部からのアクセスは許されません。 最後に、PHPは、一部のサブクラスが親クラスからメンバーを積載することができます。PHP 5の対象モデルは、対象を他のデータの種類とは違って、参照によって伝達されます。 PHPはあなたが引用によって明示的に伝達し、対象に戻ることを要求しません。 この章の最後に引用に基づく対象モデルを詳細に述べる。 PHP 5の中で最も重要な新特性です。より直接的な対象モデルがあれば、追加の利点があります。 効率が上がる メモリの使用量が少なく、より大きな柔軟性を持っています。PHPの前のバージョンでは、スクリプトはデフォルトでコピーされたオブジェクトを標準にしています。今はPHP 5はハンドルを移動するだけで、より少ない時間が必要です。 スクリプトの実行効率が向上したのは、不必要なコピーを避けたからです。 対象システムが複雑さをもたらすと同時に、実行効率上の収益ももたらす。 同時、複製を減らすということは、より少ないメモリを使って、他の操作にメモリを残しておくことができます。これは効率を向上させます。Zandエンジン2はより大きな柔軟性を持っています。 一つの嬉しい発展は、物を壊す前に一つの方法を実行することを可能にすることです。 これはメモリを利用するのにもいいです。PHPはいつ対象の引用がないかを明確にして、空いているメモリを他の用途に割り当てます。  補足:PHP 5のメモリ管理対象転送  PHP 5はZendエンジンIIを使用しており、対象は独立した構造Objectに格納されている。 Storeでは、他の一般変数のようにZvalに格納されていません(PHP 4では対象が一般変数と同じようにZvalに格納されています)。Zvalには、コンテンツではなくオブジェクトのポインタのみが格納されている。オブジェクトをコピーしたり、オブジェクトをパラメータとして関数に渡すときは、データをコピーする必要はありません。同じオブジェクトポインタだけを保持し、他のzvalから現在のこの特定のオブジェクトが指すObjectを通知します。 Storeオブジェクト自体がObjectにあるため Storeでは、私たちが行った変更は、オブジェクトのポインタを持つすべてのzval構造に影響を及ぼします。プログラムに表示されるオブジェクトの変化は、ソースオブジェクトに影響を与えます。これはPHPの対象がいつも引用によって伝達されるように見えるので、PHPの対象はデフォルトでは「引用」によって伝達されます。PHP 4のように&を使って声明する必要はありません。  ごみ回収メカニズムのいくつかの言語は、典型的なCなど、データ構造を作成するときに、メモリの割り当てを明示的に要求する必要があります。メモリに割り当てたら、変数に情報を格納することができます。同時にあなたも変数を使用し終わった時にメモリを解放してください。このマシンは他の変数にメモリを空けることができます。メモリを消耗させないようにしてください。PHPは自動的にメモリ管理ができ、不要なオブジェクトをクリアします。PHPは参照カウントを使用しています。 countingという単純なゴミ回収です。 システム。各オブジェクトには参照カウンタが含まれています。各referenceは対象に接続され、カウンタは1を加算します。referenceが生存空間から離れると、またはNULLに設定され、カウンタは1を減算します。あるオブジェクトの参照カウンタがゼロの場合、PHPはこのオブジェクトを使用しないことを知っています。メモリ空間を解放します。例えば:

<?php  
class Person{  
}  
function sendEmailTo(){  
}  

$haohappy = new Person( );    
//  :       Reference count = 1  
$haohappy2 = $haohappy;        
//  :  Reference count = 2  
unset($haohappy);            
//  : Reference count = 1  
sendEmailTo($haohappy2);       
//  :    
//  :  
//  Reference count = 2  
//  :  
// Reference count = 1  

unset($haohappy2);            
//  : Reference count = 0    

?>