Ceviz Forum'a hoşgeldiniz.
8 sonuçtan 1 ile 8 arası gösteriliyor
  1. #1
    mutlak butlanla batıl...
    Üyelik Tarihi
    04/2009
    Yer
    http://localhost/
    Mesaj
    234

    Soru PHP class kullanımı

    Elimde aşağıdaki gibi bir anket sınıfı var. Buradaki $this değişkenini değiştirmem mümkün mü?
    PHP Kodu:
    class AnketSinifi {
        var 
    $toplam_oyu_goster;
        var 
    $aktif;
        var 
    $aktif_anket_basligi;
        var 
    $tarih;
        var 
    $ip;
        var 
    $eski_anketler;

    function 
    AnketSinifi() {
        
    $this->toplam_oyu_goster true;
        
    $this->YayindakiAnket();
        
    $this->tarih time();
        
    $this->ip ip_al();
        
    $this->eski_anketler true;

    Yani buradaki $this yerine $sinif değişkenini kullanmak istiyorum. Ama o zaman hata veriyor. $this değişkeni PHP'nin tanıdığı bir değer midir yoksa bu değiştirilebilir mi?
    Saygılarımla.
    Yüreğinin götürdüğü yere git!

  2. #2
    where id='Linux'
    Üyelik Tarihi
    07/2006
    Yer
    Trabzon
    Mesaj
    4,408

    Varsayılan

    $this bulunduğu yerde/fonksiyonda "bu" anlamında kullanılıyor.
    Üzerinde yeterince çalışıldığında her şey mümkündür.
    IPBAccess

  3. #3
    mutlak butlanla batıl...
    Üyelik Tarihi
    04/2009
    Yer
    http://localhost/
    Mesaj
    234

    Varsayılan

    O zaman Türkçe $bu şeklinde kullanmak mümkün mü? Yani tamam anlamının "bu" olduğunu biliyorum. İyi derecede İnlizcem de var ama kodlamalarda Türkçe kullanmayi daha çok seviyorum.
    Yüreğinin götürdüğü yere git!

  4. #4
    Ceviz Üyesi
    Üyelik Tarihi
    08/2009
    Yer
    İzmir
    Mesaj
    672

    Varsayılan

    Yeni bir AnketSinifi nesnesi üreterek yapabilirsin.

    PHP Kodu:
    class AnketSinifi
    {
    var 
    $bu = new AnketSinifi();
    var 
    $toplam_oyu_goster;
    var 
    $aktif;
    var 
    $aktif_anket_basligi;
    var 
    $tarih;
    var 
    $ip;
    var 
    $eski_anketler;

    function 
    AnketSinifi()
    {
    $bu->toplam_oyu_goster=true;
    $bu->yayindakiAnket();
    $bu->tarih time();
    $bu->ip ip_al();
    $bu->eski_anketler true;
    }


    Ama böyle bir kullanım tavsiye etmem.

  5. #5
    Üyeliği İptal Edildi
    Üyelik Tarihi
    11/2009
    Yer
    tinç
    Mesaj
    576

    Varsayılan

    Ne gerek var ki...
    Boşu boşuna hantallaşacak kodun ve daha karmaşık bir duruma gelecek. İlla istiyorsan, MadBlazer'ın dediğini yap.

    PHP'de $this bir anahtar sözcüktür. İçinde bulunduğu nesneyi temsil eder. Yani nesneye eşdeğer sınıftaki yöntemi çağırır.
    PHP Kodu:
    $bu = new nesne
    Burada yeni bir nesne oluşturduk. Bundan önce:
    PHP Kodu:
    class nesne{
    function 
    yaz($str){echo $str;}

    Dedik şimdi. Biz bu yaz yöntemini kullanmak istiyoruz:
    PHP Kodu:
    $bu->yaz("Merhaba Dünya"); 
    ancak yeni bir yöntemimiz var, eski nesne sınıfına bakalım:
    PHP Kodu:
    class nesne{
    function 
    yaz($str){echo $str;}
    function 
    yine_yaz($str){$this->yaz($str);}

    Şimdi bu yöntemi nesnede uygulayalım:
    PHP Kodu:
    $bu->yine_yaz("Merhaba Dünya"); 
    Böylece PHP'nin yaptığı şey $bu adlı nesneye eşdeğer olan sınıfı (nesne adlı sınıfı) buldu ve onun içindeki yine_yaz() yöntemi için $bu->yaz() yöntemini kullandı.
    Böyle anlatılınca karmaşık ve gereksiz görünüyor; ancak $this oldukça kolay ve aşırı önemli bir şey bence... Örneğin ben şu anda bir HTML çatısı oluşturmaya çalışıyorum, doğal olarak echo komutunu kullanamıyorum; çünkü her şeyi muhteşem bir düzende, sırada ve çeşitli tab uzaklığında atmam gerekiyor. Bu yüzden sürekli kendi sınıfımdan işlevleri kullanıyorum. Ayrıca yalnızca işlevleri değil; $this ile sınıftaki değişkenleri de çağırabilirsin...

    Umarım anlamışsındır...

    Bu arada: (KONU DIŞI)
    (...);ama kodlamalarda Türkçe kullanmayi daha çok seviyorum.
    Saygı duyuyorum... Ayrıca çok haklısın... Size yerden göğre kadar hak veriyorum; keşke kendi öz dilimizde kodlama yapabilsek. Umarım biri birgün çıkar Türkçe'nin gücünü gösterecek bir dil yazar...

  6. #6
    Ceviz Üyesi
    Üyelik Tarihi
    03/2008
    Mesaj
    180

    Varsayılan

    $this i değiştiremezsiniz. Çünkü $this o sınıftan türetilmiş o an için kullanıldığı varsayılan nesneye işaret eder.

    Alıntı MadBlazer, mesajından alıntı: Mesajı Gör
    Yeni bir AnketSinifi nesnesi üreterek yapabilirsin.

    PHP Kodu:
    class AnketSinifi
    {
    var 
    $bu = new AnketSinifi();
    var 
    $toplam_oyu_goster;
    var 
    $aktif;
    var 
    $aktif_anket_basligi;
    var 
    $tarih;
    var 
    $ip;
    var 
    $eski_anketler;

    function 
    AnketSinifi()
    {
    $bu->toplam_oyu_goster=true;
    $bu->yayindakiAnket();
    $bu->tarih time();
    $bu->ip ip_al();
    $bu->eski_anketler true;
    }


    Ama böyle bir kullanım tavsiye etmem.
    Yukarıdaki kodu baz alırsak."AnketSinifi" sınıfından bir nesne türetelim.

    $a = new AnketSinifi();
    echo $a>bu->toplam_oyu_goster;
    echo $a->toplam_oyu_goster

    Bu ikisi farklı şeyi temsil eder. İlki "$a" nesnensinin içindeki "$bu" nesnesinin içindeki değişkenin değerini verir. İkinci ise "$a" nesnesinin içindeki değişkenin değerini verir.

  7. #7
    Üyeliği İptal Edildi
    Üyelik Tarihi
    11/2009
    Yer
    tinç
    Mesaj
    576

    Varsayılan

    İşte ondan dolayı tavsiye etmemiş zaten, çalışmayacağı için...

  8. #8
    Ceviz Üyesi
    Üyelik Tarihi
    03/2008
    Mesaj
    180

    Varsayılan

    Alıntı esatarslan52, mesajından alıntı: Mesajı Gör
    $this i değiştiremezsiniz.
    Bu söylediğimi geri aldım. Referans kullanarak değiştirebildim.

    PHP Kodu:
    <?php
        
    class Birsey
        
    {
            private 
    $mesaj;
            private 
    $bu;
            
            function 
    __constructor()
            {
                
    $this->bu = &$this;
            }
            
            function 
    mesaj($mesaj)
            {
                
    $bu->mesaj $mesaj;
                echo 
    $bu->mesaj;
            }
        }
        
        
    $nesne = new Birsey();
        
        
    $nesne->mesaj("merhaba");
    ?>


 

Konu Bilgileri

Users Browsing this Thread

Şu an 1 kullanıcı bu konuya bakıyor. (0 üye ve 1 ziyaretçi)

Sık Kullanılanlar

Sık Kullanılanlar

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz
  •  
Yukarı Çık