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