• 22-02-2021, 22:36:49
    #1
    Merhabalar merak ettiğim bir konu var; bilgili abilerimden cevaplar bekliyorum.

    phpde class oluştururken örneğin;

    class try {
    public className $class; 
    }
    yukardaki yapmış olduğum tanımlama neyi ifade ediyor? veya

    class try {
    
    public function go(className $class){}
    
    }
    şeklindeki yapmış olduğum tanımlama tam olarak neyi ifade ediyor ve ne için kullanılır?

    yapmak istediğim şöyle bir şey var

    2 adet sınıfım olsun. fakat bu sınıflar birbirlerinden habersiz herhangi bir extends olayı yok .

    1. sınıfımı new ile başlattığımda 1. sınıfım içinde yer alan bir özellik veya metot ile 2. sınıfımdaki özellikleri kullanıp gerekli işlemleri yaptıktan sonra o bilgileri 1. sınıfıma dönüp 1. sınıfımın instance'yi kaybetmeden kullanmaya devam etmek istiyorum?

    nasıl yapılabilir? fikirlerinizi paylaşırsanız sevinirim.
  • 22-02-2021, 23:03:51
    #2
    tam anlayamadım ama sanırım zincirleme method'lardan bahsediyorunuz.
    https://www.mertbuldur.com/php-oop--...thod-kullanimi
  • 23-02-2021, 11:07:51
    #3
    public function go(className $class){}
    go isimli method çağrıldığında className isimli bir sınıf nesnesinin parametre olarak eklenmesini istediğinizi belirtiyorsunuz. Methoda sınıf enjekte ediyorsunuz.
  • 23-02-2021, 11:29:10
    #4
    coder63 adlı üyeden alıntı: mesajı görüntüle
    public function go(className $class){}
    go isimli method çağrıldığında className isimli bir sınıf nesnesinin parametre olarak eklenmesini istediğinizi belirtiyorsunuz. Methoda sınıf enjekte ediyorsunuz.
    cevap için teşekkürler hocam. peki ilk durumdaki nedir ?
  • 23-02-2021, 13:38:16
    #5
    Polat adlı üyeden alıntı: mesajı görüntüle
    cevap için teşekkürler hocam. peki ilk durumdaki nedir ?
    publicclassName $class;
    Burada ise className isimli sınıf nesnesi olan class adında bir property oluşturuyorsunuz.
  • 23-02-2021, 15:48:39
    #6
    coder63 adlı üyeden alıntı: mesajı görüntüle
    publicclassName $class;
    Burada ise className isimli sınıf nesnesi olan class adında bir property oluşturuyorsunuz.
    o property'e tekrardan atama yapmadan onu kullanabilmemin bir şansı varmı? bu şekilde tanımlasam bile instance'a erişemiyorum onun. fatal error veriyor.

    örneğin şöyle bir şey yaptığımızı varsayalım;

    bir ürün oluşturacağım ve sonra o ürüne ait varyant ekleyeceğim.

    ürün clasım Product olsun ve varyant classım ise Productvaryant olsun.

    new Product() ile instancesini aldım ürünümün ve ekstradan 1-2 varyant eklemek istiyorum.

    $urun = new Product();

    $urun->varyant->name.. >> bu bölümü nasıl oluşturabilirim? ortadaki varyant aslında Productvaryant class'ım.

    demek istediğimi anlatabildim mi hocam?
  • 23-02-2021, 20:30:03
    #7
    Product instance üzerinden ProductVariant a erişmek istiyorsanız (ikisinin de farklı tablolarda veri tuttuğunu varsayarsak) bir relation kurup öyle erişmeniz gerkir.

    Sizin örneğinizde Product model sınıfı içinde varyant isimli bir method olması ve bu methodun ProductVariant tipinde sonuç return etmesi gerekir.