merhaba bunun mantığını anlayamadım ben karşılaştırma yapmıyorum ki ? Ayrıca $this->$degisken değilde o $this->degisken olması gerekiyordu galiba. ben kod içerisinde nesnemdeki bir public değişkenin değeri değişince öncelikle değişti yazısını yazdırıp sonra normal atama işlemini yapmak istiyorum yani == ile eşitlik kontrolünü neden yaptınız ?
2009/8/27 Mecid UYSAL <[email protected]>: > function __set($degisken,$degeri){ > echo("<br>Verin olan ".$degisken." e ".$degeri." verisini > yerleştirdim<br>"); > //$degisken=$degeri; > > // Yukardaki satiri bu sekilde degistirirsen hatan > duzelecektir.. > $this->$degisken = =$degeri; > } > > Kolay gelsin... > > > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Ömer F. > USTA > Sent: Thursday, August 27, 2009 5:32 AM > To: Özgür yazılımlarla çeşitli dillerde yazılım geliştirme > Subject: [Linux-programlama] [php (5.3.0)] Override problemim ( __get / > __set ) > > Merhabalar > php tarafındaki oop eksikliklerimi gidermek için örnekler yazarak > eksiğimi gidermeye çalışırken şöyle bir sorunla karşılaştım: > > __get ve __set fonksiyonlarını Override etmeme rağmen php bunu yoksayıyor. > Acaba nerede hata yapıyorum : > > Araba.php dosya içeriği : > > <?php > > class Araba { > protected $calisiyorMu = false; > protected $marka = ""; > public $deger1 = 100; > > function __construct($MarkaAdi) { > $this->calisiyorMu = true; > $this->marka=$MarkaAdi; > } > > function calistir() { > $this->calisiyorMu=true; > } > > function durdur() { > $this->calisiyorMu=false; > } > > function __toString(){ > return "Bu Araba : ". $this->marka ." Markadir."; > } > > function __get($degisken){ > echo("<br>Talepte Bulunduğun verinin değeri: > ".$degisken."<br>\n"); > return $degisken; > } > > function __set($degisken,$degeri){ > echo("<br>Verin olan ".$degisken." e ".$degeri." verisini > yerleştirdim<br>"); > $degisken=$degeri; > } > > function durum() { > return $this->calisiyorMu; > } > > function __destruct() > { > echo "gitttiiiiii gittti gül gibi $this gitti."; > } > > } > > ************************************************************************** > index.php dosya içeriği : > > <?php > function __autoload($class_name) { > require_once $class_name . '.php'; > } > > echo("yeni arabam :\n<br>"); > $arabam = new Araba("Serçe"); > echo ($arabam." <br>"); > > echo ("<br> *****************<br>"); > echo ("Çalışıyor mu : <br>"); > echo ($arabam->durum() ? "Çalışıyor : )":"Durmuş :(" ); > > echo ("<br> *****************<br>"); > $arabam->durdur(); > echo ("Çalışıyor mu : <br>"); > echo ($arabam->durum() ? "Çalışıyor : )":"Durmuş :(" ); > > echo ("<br> *****************<br>"); > $arabam->calistir(); > echo ("Çalışıyor mu : <br>"); > echo ($arabam->durum() ? "Çalışıyor : )":"Durmuş :(" ); > > echo ("<br> *****************<br>"); > echo ("get/set overload testim:<br>"); > echo ($arabam->deger1); > $deneme = $arabam->deger1; > $arabam->deger1=500; > > echo ("<br> *****************<br>"); > $arabam =0; > echo ("<br> *****************<br>"); > > ?> > > > **************************************************************************** > ***** > > Çıktı : > > yeni arabam : > Bu Araba : Serçe Markadir. > > ***************** > Çalışıyor mu : > Çalışıyor : ) > ***************** > Çalışıyor mu : > Durmuş :( > ***************** > Çalışıyor mu : > Çalışıyor : ) > ***************** > get/set override testim: > 100 > ***************** > gitttiiiiii gittti gül gibi Bu Araba : Serçe Markadir. gitti. > ***************** > > > burada ki çıktıda get / set override testim kısmında Eksiklikler mevcut > beklentim şu şekilde çıktı vermesi yönündeydi : > > Talepte Bulunduğun verinin değeri: 100 > 100 > Talepte Bulunduğun verinin değeri: 100 > Verin olan 100 e 500 verisini yerleştirdim > > fakat bir yerde ben veya php hata yapıyoruz. > Şimdiden teşekkürler > > Saygılarılma > ömer > > > -- > Ömer Fadıl USTA > http://www.bilisimlab.com/ > _______________________________________________ > Linux-programlama mailing list > [email protected] > http://liste.linux.org.tr/mailman/listinfo/linux-programlama > > _______________________________________________ > Linux-programlama mailing list > [email protected] > http://liste.linux.org.tr/mailman/listinfo/linux-programlama > -- Ömer Fadıl USTA http://www.bilisimlab.com/ _______________________________________________ Linux-programlama mailing list [email protected] http://liste.linux.org.tr/mailman/listinfo/linux-programlama
