<?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

Cevap