• 08-02-2020, 16:55:30
    #1
    merhabalar,

    class Polat {    public function yaz($text){        echo $text;    }}$a = new Polat();$a->yaz('bir şeyler');
    şeklinde class içerisindeki fonksiyona ulaşabiliyorum fakat şöyle bir yapı nasıl yapabilirim.

    $a->yaz('bir şeyler')->baskamethod()->birbaskamethod();

    kırmızı ile işaretlediğim bir yapı kurmak için nasıl bir kod yazmam gerekiyor? yardımcı olabilecek olan var mı ?
  • 08-02-2020, 17:04:58
    #2
    Metodların içinde return this diyerek sınıf yeniden çağrılır ve aynı sınıf içerisindeki metodlar tekrar kullanılabilir olur.İstediğiniz kadar queue oluşturabilirsiniz
  • 08-02-2020, 17:09:07
    #3
    Örnek vereyim. this ile herhangi bir metoda gönderdiğiniz değişkeni, aynı sınıf içerisindeki başka bir metoda aktarabilirsiniz.
    Değişkenler başka sınıflar ile karışmaması için; private ile değişkeni sınıf dışına çıkmasını engellemeyi unutmayın.
    $sinif = New Sinif();
    class Sinif {
        private $metin1 = "";
        private $metin2 = "";
        public function metod1($metin1) {
            $this->metin1 = $metin1;
            return $this;
        }
        public function metod2($metin2) {
            return $this->metin1 . " " . $metin2;
        }
    }
    echo $sinif->metod1("deneme")->metod2("yazim");
  • 08-02-2020, 17:11:15
    #4
    darness adlı üyeden alıntı: mesajı görüntüle
    Metodların içinde return this diyerek sınıf yeniden çağrılır ve aynı sınıf içerisindeki metodlar tekrar kullanılabilir olur.İstediğiniz kadar queue oluşturabilirsiniz
    cevabınız için teşekkürler hocam denedim oldu şuan



    MCERAN adlı üyeden alıntı: mesajı görüntüle
    Örnek vereyim. this ile herhangi bir metoda gönderdiğiniz değişkeni, aynı sınıf içerisindeki başka bir metoda aktarabilirsiniz.
    Değişkenler başka sınıflar ile karışmaması için; private ile değişkeni sınıf dışına çıkmasını engellemeyi unutmayın.
    $sinif = New Sinif();
    class Sinif {
        private $metin1 = "";
        private $metin2 = "";
        public function metod1($metin1) {
            $this->metin1 = $metin1;
            return $this;
        }
        public function metod2($metin2) {
            return $this->metin1 . " " . $metin2;
        }
    }
    echo $sinif->metod1("deneme")->metod2("yazim");
    açıklamanız için çok teşekkür ederim.
  • 08-02-2020, 17:22:49
    #5
    <?php
    class Polat
    {
    public function yaz($text)
    {
    echo $text;
    return $this;
    }
    
    public function yaz2($text)
    {
    echo "\n" . $text;
    return $this;
    }
    }
    
    $a = new Polat();
    $a->yaz('bir şeyler')->yaz2('deneme');
    ?>
  • 08-02-2020, 18:32:01
    #6
    Arkadaşlar örnek vermiş.
    Anahtar kelime: Method chaining (Zincirleme method)
  • 10-02-2020, 18:18:09
    #7
    static de ise şu şekilde oluyor

    class font
    {
        private static  $veri = null;
    
        public static function yazi($yazi)
        {
            self::$veri = $yazi;
            return new static;
        }
        public static function bold_yap()
        {
            self::$veri = '<strong>'.self::$veri.'</strong>';
            return new static;
        }
        public static function veriyi_al()
        {
            return self::$veri;
        }
    }
    echo font::yazi('test')->bold_yap()->veriyi_al();