<?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
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama