Aslında olay şöyle (bende yeni farkına vardım): *__set()* is run when writing data to inaccessible members.// tanımlanmamış (erişilemeyen) değişkenler yazılırken çalışır
*__get()* is utilized for reading data from inaccessible members. .// tanımlanmamış (erişilemeyen) değişkenler yazılırken çalışır daha önce gönderdiğim örnekte set'in çalışıp get in çalışmamasının nedeni de get'in set de değişken tanımlandıktan sonra "erişilemeyen" tanımlamasından çıktığı içindir. Kaynak: http://www.php.net/manual/en/language.oop5.overloading.php 2009/8/27 Elvin Şiriyev <[email protected]> > <?php > class Araba { > public function __set($degisken, $deger){ > $this->$degisken = $deger; > } > public function __get($degisken){ > return $this->$degisken; > } > } > > $a = new Araba(); > $a->sorun = '$this->degisken değil gerçekten $this->$degisken'; > echo $a->sorun; > > > 2009/8/27 Ömer F. USTA <[email protected]> > > malesef işe yaramadı. >> sanki __set ve __get hiç override olmuyor gibi >> >> 2009/8/27 Mecid UYSAL <[email protected]>: >> > Kusura bakma esittire 2 defa basmisim ;))) >> > >> > >> > public function __set($degisken, $ degeri) { >> > $this->$degisken = $degeri; >> > } >> > >> > public function __get($degisken) { >> > return $this->$degisken; >> > } >> > Seklinde deneyiniz. >> > >> > >> > Bu sekilde deneyiniz. PHP de classlarda degiskenlere erisirken >> > "$this->degisken" seklinde erisirsiniz. >> > Class disindanda; >> > $obje = new Class; >> > $obje->degisken; >> > Seklinde erisirsiniz. >> > >> > >> > -----Original Message----- >> > From: [email protected] >> > [mailto:[email protected]] On Behalf Of Ömer >> F. >> > USTA >> > Sent: Thursday, August 27, 2009 8:49 AM >> > To: Özgür yazılımlarla çeşitli dillerde yazılım geliştirme >> > Subject: [Linux-programlama] Re: [php (5.3.0)] Override problemim ( >> __get / >> > __set ) >> > >> > 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 >> > >> > _______________________________________________ >> > 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 >> > > > > -- > Elvin Şiriyev > http://siriyev.net > -- Elvin Şiriyev http://siriyev.net
_______________________________________________ Linux-programlama mailing list [email protected] http://liste.linux.org.tr/mailman/listinfo/linux-programlama
