Is it possible to define attributes to a class in the constructor. For instance I pass a Associative Array to a class constructor and I want the attributes to that class to be declared and set based on what is in the Associative Array.
TIA
class Foo{
function __construct($arr){
foreach($arr as $k => $v)
$this->$k = $v;
}
}
Sen constructor/desctructor manual ve properties manual inceleyebilirsiniz.
Tüm public hangi IMHO ayarlanır sınıfta özelliklerini tanımlamak olmadığı unutulmamalıdır tür tehlikelidir. Ben reflection kullanarak aynı şeyi elde etmek mümkün olabileceğini düşünüyorum. Ben sadece daha derinlemesine yansımasını kontrol ve yansıması o PHP6 ile gelebilir bunu yapabilmek için mantıklı olur çünkü, (PHP5 ile) mümkün değildir.
tam örnek
<?php
class Foo{
function __construct($arr){
foreach($arr as $k => $v)
$this->$k = $v;
}
function getBar(){
return $this->bar;
}
}
$bar = new Foo(array(
'bar' => 'bar',
'foo' => 'foo'
)
);
var_dump($bar->bar);
?>
RageZ yukarıda tanımladığı gibi kesinlikle, bunu yapabilirsiniz, ama ben bunu yapıyorum tavsiye ederim sanmıyorum. Bu ne yapar bu sınıfın kullanıcıları arasında bir "sözleşme" çok gevşek oluşturur - kimse gerçekten sınıfı sahip olduğu özellikleri bilir yani.
Bunun yerine anında özelliklerini tanımlayan, ben sırayla bir sınıf hiyerarşisi tanımlayabiliriz "nesne özellik kümeleri" önceden tanımlanmış bir dizi var bahse girerim.
Peki yerine yapıyor
Bunu yapın:
Sonra, nesne statik fabrika yönteme geçirilen parametrelere bağlı olarak sağ türünü üretmek için fabrika desen kullanın.