PHP で複数のオブジェクトをインスタンス化する場合、各オブジェクトには独自のメソッドがありますか、それとも 1 つのメソッドのみがインスタンス化されますか?
例:
Class SimpleClass {
public $attr = 'some value';
public function set_attr($val){
$this->attr = $val ;
}
}
$sc1 = new SimpleClass();
$sc2 = new SimpleClass();
$sc1->set_attr('new value1');
$sc2->set_attr('new value2');
この例では、各 SimpleClass オブジェクトがメモリ内に独自のメソッド set_attr() を持っているかどうか、または 1 つしかないかどうかを知りたいです。JavaScript では、プロトタイプ オブジェクトを使用してこのようにすることができます。そして、それが他の言語にもあるかどうかを知りたいです。
明確にするために:JavaScriptでは、プロトタイプオブジェクトに基づいてメソッドを作成できます:
SimpleClass = function() { this.attr = 'old val'; };
SimpleClass.prototype.set_attr = function(val) { this.attr = val ; };
var sc1 = new SimpleClass();
var sc2 = new SimpleClass();
sc1.set_attr('new val');
sc2.set_attr('new val');
この例では、各オブジェクト sc1 および sc2 に変数が割り当てられますが、1 つのメソッド ( set_attr() ) だけが SimpleClass プロトタイプ オブジェクトに割り当てられます。