static classlarda zincirleme olayını ilk sizden duydum,
"return new self;" test ettiniz mi bu yapıyı? php yeni versiyonlarında çıkmış bir durum mu?
ben sadece türetilmiş sınıf ile temel sınıf arasında aynı methodları ayırmak için new self() yazımını biliyorum.
php 5.4.16 versiyonunu kullanıyorum. muhtemelen 5.3'den sonra falan gelmiş olabilir özellik. Dediğim gibi şu an da popüler olan çoğu framework'de bu tarz kullanımlar mevcut. Ki benim büyük heves ve ilgiyle takip ettiğim, çalıştığım framework olan Laravel'de de bu yapı mevcut.
View::make('post.show')->with('post', $post); veya
DB::table('uyeler')->update(array('votes' => 1)); gibi mesela. Bu açıdan bir araştırmaya girmiştim ve return new self; komutu ile dediğimi yaptım. Bu return $₺his ile aynı şeyi yapıyor sanırım static metotlar için.
hocam olay basit aslında
dizilim şu şekilde olmalı
obje objeye ait method sonra tekrar objeye ait method şeklinde gidiyor sonrada bir toplayıcı method hepsini topluyor da ben şimdi bunu böyle anlatamadım basit bir örnek koyalım.
<?php
class Sinif
{
private $str;
function __construct(){
$this->yazi = "";
}
function yaziA(){
$this->yazi .= "r10";
return $this;
}
function yaziB(){
$this->yazi .= "net";
return $this;
}
function yazilarigetir(){
return $this->yazi;
}
}
$sinif = new Sinif();
echo $sinif->yaziA()->yaziB()->yazilarigetir();
Hocam bu şekilde zaten kullanabiliyorum burda problem yok. Ama burda kullanabilmeniz için dahil ettiğiniz sınıfı new etmeniz gerek. Static sınıflarda böyle bir duruma gerek kalmıyor. Dikkat ederseniz benim verdiğim örnekte
db::select('id, title, content')->from('news')->orderBy('id', 'desc')->getAll(); şeklinde bir kullanım var. $db->select()->from()->.... diye değil. Ama yukarda söylediğim gibi sorunu hallettim.
İlginiz için teşekkürler, lazım olan olursa böyle bişey, bunu kullanabilir