PHP Class Yazarken Karşılaştığım Hata
-
Fatal error: Using $this when not in object context in /home/iyibu/public_html/_inc/iyibuTema.php on line 166
Bahsedilen kodlar da şöyle hocalar:
Yapmak istediğim şu: bir değişkeni parse ederken var olan classtaki girdi veya dizi fonksiyonunu çalıştırmak istiyorum.
function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', function ($m) { eval('$değişken_içi = '.$m[3].';'); return $this->$m[1]("$m[2]",$değişken_içi);}, $this->iyibu); $this->değiştir(); }mesela:
#girdi turan = 'deneme'#
deyince parse edilen değişkende
$this->girdi('turan','deneme') kodu çalışacak. ama sadece buda değil. 2+1 yazınca string olarak değil sayı olarak girdi girilcek
edit: buraya evalden sonra return'u vardı onu eklemeyi unutmuşum ekledim. şimdi kod doğru birebir çalışmayan kod. okul numaram 166 hatrına el atın :)
edit2: hocalar lütfen dalga geçmeyin class gerekiyor felan diye tabiki class var 256 satır kodu buraya mı ekleyim allahaşkına???? classın içindeki function bu -
-
sokoban bunu yazdı
Bu class degil function hocam bunda $this operatorü olmaz
Hocam dalga geçme şaka yapma ciddiyim burda lütfen..
Ha belki sen de ciddisindir diye: classın içindeki function zaten bu.
-
by_Tet bunu yazdısokoban bunu yazdı
Bu class degil function hocam bunda $this operatorü olmaz
Hocam dalga geçme şaka yapma ciddiyim burda lütfen..
Ha belki sen de ciddisindir diye: classın içindeki function zaten bu.
Tamam hocam kolay gelsin
-
sen ne yapmak istiyosun söylesene hiçbirşey anlamadım. ayrıca o ne öyle türkçe fonksiyon ismi türkçe değişkenler bide üstüne üstlük eval kullanmışsın.
-
Cosmic bunu yazdı
sen ne yapmak istiyosun söylesene hiçbirşey anlamadım. ayrıca o ne öyle türkçe fonksiyon ismi türkçe değişkenler bide üstüne üstlük eval kullanmışsın.
Hocam türkçe değişkenler sorun yaratmıyor diye biliyorum php 5.3+nde? yani $türkçe = "turan"; echo $türkçe yazınca sorun mu oluyor? utf-8 açıklaması okumuştum bu yüzden kullanıyorum yani.
Yapmak istediğimi anlattım ama şöyle bikez daha anlatıyım.
Hocam template engine yapıyorum. .tpl dosyasını okutuyorum. içinde #değişken# gibi yazdırdığım şeyler {if/else/elseif/for/foreach} gibi kodlamalar var onları parse ettiriyorum. hepsi tamam yaptım. girdileri girdi fonksiyonu ile okutuyorum.
#girdi turan = "deneme"# şeklinde parse ettiğim .tpl dosyasında girdi oluşturtmak istiyorum.
Olay bu şekilde.
-
php fonksiyonun parametresinde fonksiyon tanımlamaya izin veriyormu ? yeni mi geldi bu özellik ?
-
RDxMaster bunu yazdı
php fonksiyonun parametresinde fonksiyon tanımlamaya izin veriyormu ? yeni mi geldi bu özellik ?
Hocam: multi satır yaptığım için kodları iyi okuyamadın sanırsam? preg_callback'te tanımlı return functionu yani function içinde function yok :)
-
Callback Function içinde $ this kullandigin icin sorun yaratiyor buyuk ihtimalle onu class disi bir islem olarak algiliyor
-
by_Tet bunu yazdı
Fatal error: Using $this when not in object context in /home/iyibu/public_html/_inc/iyibuTema.php on line 166
Bahsedilen kodlar da şöyle hocalar:
Yapmak istediğim şu: bir değişkeni parse ederken var olan classtaki girdi veya dizi fonksiyonunu çalıştırmak istiyorum.
function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', function ($m) { eval('$değişken_içi = '.$m[3].';'); return $this->$m[1]("$m[2]",$değişken_içi);}, $this->iyibu); $this->değiştir(); }mesela:
#girdi turan = 'deneme'#
deyince parse edilen değişkende
$this->girdi('turan','deneme') kodu çalışacak. ama sadece buda değil. 2+1 yazınca string olarak değil sayı olarak girdi girilcek
edit: buraya evalden sonra return'u vardı onu eklemeyi unutmuşum ekledim. şimdi kod doğru birebir çalışmayan kod. okul numaram 166 hatrına el atın :)
edit2: hocalar lütfen dalga geçmeyin class gerekiyor felan diye tabiki class var 256 satır kodu buraya mı ekleyim allahaşkına???? classın içindeki function buHocam bu sekilde yapar misin
function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', create_function("$m","eval('$değişken_içi = '.$m[3].';');return $this->$m[1]('$m[2]',$değişken_içi);"), $this->iyibu); $this->değiştir(); } -
dhmm bunu yazdıby_Tet bunu yazdı
Fatal error: Using $this when not in object context in /home/iyibu/public_html/_inc/iyibuTema.php on line 166
Bahsedilen kodlar da şöyle hocalar:
Yapmak istediğim şu: bir değişkeni parse ederken var olan classtaki girdi veya dizi fonksiyonunu çalıştırmak istiyorum.
function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', function ($m) { eval('$değişken_içi = '.$m[3].';'); return $this->$m[1]("$m[2]",$değişken_içi);}, $this->iyibu); $this->değiştir(); }mesela:
#girdi turan = 'deneme'#
deyince parse edilen değişkende
$this->girdi('turan','deneme') kodu çalışacak. ama sadece buda değil. 2+1 yazınca string olarak değil sayı olarak girdi girilcek
edit: buraya evalden sonra return'u vardı onu eklemeyi unutmuşum ekledim. şimdi kod doğru birebir çalışmayan kod. okul numaram 166 hatrına el atın :)
edit2: hocalar lütfen dalga geçmeyin class gerekiyor felan diye tabiki class var 256 satır kodu buraya mı ekleyim allahaşkına???? classın içindeki function buHocam bu sekilde yapar misin
function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', create_function("$m","eval('$değişken_içi = '.$m[3].';');return $this->$m[1]('$m[2]',$değişken_içi);"), $this->iyibu); $this->değiştir(); }function dilÇevir_değişken(){ $this->değiştir(); $this->iyibu = preg_replace_callback( '@\#(girdi|dizi) (.*?).=.(.*?)\#@', array($this,'dene'), $this->iyibu); $this->değiştir(); } function dene($m) { eval('$değişken_içi = '.$m[3].';'); $this->$m[1]("$m[2]",$değişken_içi); }şeklinde hallettik hocam @Cosmic sağolsun :) senin dediğin gibi de olmadı denedim de böyle iyi oldu güzel :)
Ayrıca kodlar çalışıyor ama farklı hostta çalışmıyordu ilk kodlar. En nefret ettiğim şey: tutarsızlığı yaşıyordum. Düzeldi allahtan sorun kalmadı :)
by_Tet tarafından 27/Ağu/13 12:38 tarihinde düzenlenmiştir
