Zeta adlı üyeden alıntı: mesajı görüntüle
icerik getir fonksiyonu ne iş yapıyor kod yapısı çok kötü ve karmaşık geldi ne yapmak istediğini söylersen belki daha temiz bir yapı kurabiliriz
Hocam bu sınıf bir yönetim paneli sınıfı. Haber, Sayfa, Slider vs. bunları sayfalayarak listelemek için kullandığım bir fonksiyon. switch() içerisindeki kodlar çok karmaşık görünebilir ancak veritabanındaki hemen hemen tüm tabloları kontrol etmem için bulabildiğim en temiz kod yapısı bu.
Detaylı açıklamak gerekirse;
$islem = 'liste';
$durum = '';
$sinirla = true;
$icerik = 'haber';
$sutunlar = '*';
$icerikler = new icerikler($islem, $durum, $sinirla, $icerik, $sutunlar );
$getir= $icerikler ->getir();
olduğunu varsayalım. Bu değişkenlerle kullandığımda icerikler sınıfı, 'haber' içerik tipinin bağlı olduğu mysql tablosundan, durum sütunu 0 olmayan tüm satırların tüm sütunlarını getirecek. bunu yaparken de kendi içerisinde sayfalama yaparak 0,25 arası veya ?s=1 (fonksiyon içerisinde $this->get_s olarak belirtilen değişken) ise 25, 50 arası satırları getirecek.



parsmedya33 adlı üyeden alıntı: mesajı görüntüle
Arkadaşlar merhaba. Konuyu doğru yere mi açtım bilmiyorum. Yanlış açtıysam kusura bakmayın. Yetiştirmem gereken bir proje var ve çok bir araştırma yapamadan fonksiyonlarımı class olarak toparlamam gerekiyor. Daha önce sadece fonksiyonlar ile çalışıyordum ancak bu projede class olarak toparlamam gerekti. Aşağıdaki yazacağım sınıf yapısı muhtemelen bir çok eleştiriye sebep olacak çünkü ilk denemem diyebilirim. Düzgün çalışmıyor zaten. Bir arkadaş hatalarımı belirterek kodları düzeltirse çok sevinirim. Hataları fark ettikten sonra diğer fonksiyonlarımı sınıflar halinde toparlamak daha kolay olacak zaten. Şimdiden çok teşekkür ederim.
class icerikler{
    
    private $islem;    
    private $durum;    
    private $sinirla;    
    private $icerik;
    private $sutunlar;
    private $get_ara;
    private $get_durum;
    private $get_tip;
    private $get_kategori;
    private $get_yetki;
    private $get_islem_tip;
    private $get_hesap_id;
    private $get_icerik_tip;
    private $get_s;
    
    
    public function __construct($islem, $durum, $sinirla, $icerik, $sutunlar){
        
        global $get_ara;
        
        $this->get_ara = $get_ara;
        $this->get_durum = $_GET['durum'];
        $this->get_tip = $_GET['tip'];
        $this->get_kategori = $_GET['kategori'];
        $this->get_yetki = $_GET['yetki'];
        $this->get_islem_tip = $_GET['islem_tip'];
        $this->get_hesap_id = $_GET['hesap_id'];
        $this->get_icerik_tip = $_GET['icerik_tip'];
        $this->get_s = $_GET['s'];
        $this->islem = $islem;
        $this->durum = $durum;
        $this->sinirla = $sinirla;
        $this->icerik = $icerik;
        $this->sutunlar = ($sutunlar ? $sutunlar : '*');
        
    }
    
    public function getir(){
        $secenekler = [
            'islem' => $this->islem,
            'durum' => $this->durum,
            'sinirla' => $this->sinirla,
            'icerik' => $this->icerik,
            'sutunlar' => $this->sutunlar
        ];
        return $this->icerik_getir($secenekler);
    }
    
    public function icerik_getir($secenekler){
        
        global $vt;
        
        if(is_array($secenekler)){
            $islem = ($secenekler['islem'] ? $secenekler['islem'] : $this->islem);
            $durum = ($secenekler['durum'] ? $secenekler['durum'] : $this->durum);
            $sinirla = ($secenekler['sinirla'] ? $secenekler['sinirla'] : $this->sinirla);
            $icerik = ($secenekler['icerik'] ? $secenekler['icerik'] : $this->icerik);
            $tablo = icerik_tablo($icerik);
            $sutunlar = ($secenekler['sutunlar'] ? $secenekler['sutunlar'] : $this->sutunlar);
        }else{
            return false;
        }
        
        if($tablo){
            
            $sorgu = $vt->select($sutunlar)->table($tablo);
            
        }else{
            
            return 'false';
            
        }
    
        switch($icerik){
            default:
                return false;
            break;
            case'birim':
            case'yetki':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    $sorgu = $sorgu->where('durum', '=', '3');
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

            break;
            case'eklenti':
            case'gereksinim':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

                if(!bosmu($this->get_tip)){
                    $sorgu = $sorgu->where('kategori', '=', $this->get_tip);
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            case'haber':
            case'hizmet':
            case'sayfa':
            case'sozlesme':
            case'slider':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            case'kategori':

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

                if(!bosmu($this->get_tip)){
                    $sorgu = $sorgu->where('tip', '=', $this->get_tip);
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            case'kupon':

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            case'yazilim':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_kategori)){
                    $sorgu = $sorgu->where('kategori', '=', $this->get_kategori);
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('baslik', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            case'yonetici':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_yetki)){
                    $sorgu = $sorgu->where('yetki', '=', $this->get_yetki);
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('isim', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('isim', 'asc');

            break;
            case'musteri':

                $sorgu = $sorgu->where('tip', '=', $icerik);

                if($durum=='0'){
                    $sorgu = $sorgu->where('durum', '=', '0');
                }else{
                    if(!bosmu($this->get_durum)){
                        $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                    }else{
                        $sorgu = $sorgu->where('durum', '!=', '0');
                    }
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('isim', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('isim', 'asc');

            break;
            case'kayit':

                if(!bosmu($this->get_durum)){
                    $sorgu = $sorgu->where('durum', '=', $this->get_durum);
                }

                if(!bosmu($this->get_islem_tip)){
                    $sorgu = $sorgu->where('islem_tip', '=', $this->get_islem_tip);
                }

                if(!bosmu($this->get_hesap_id)){
                    $sorgu = $sorgu->where('hesap_id', '=', $this->get_hesap_id);
                }

                if(!bosmu($this->get_icerik_tip)){
                    $sorgu = $sorgu->where('icerik_tip', '=', $this->get_icerik_tip);
                }

                if(!bosmu($this->get_ara)){
                    $sorgu = $sorgu->like('sonuc', '%'.$this->get_ara.'%');
                }

                $sorgu = $sorgu->orderBy('tarih_saat', 'desc');

            break;
            
        }
    
        if($sinirla==true){
            
            $sinir = [0, 25];//$this->kactane();

            $sorgu = $sorgu->limit($sinir[0], $sinir[1]);
            
        }

        if($islem=='liste'){
            
            $sonuc = $sorgu->getAll();
            
        }elseif($islem=='say'){
            
            $sonuc = $sorgu->getAll('count');
            
        }

        return $sonuc;
        
    }
    
    private function kactane(){
        
        $secenekler = [
            'islem' => 'say',
            'sinirla' => false,
            'sutunlar' => 'id'
        ];
        
        $toplam_icerik = $this->icerik_getir($secenekler);

        if($toplam_icerik){            

            $toplam_sayfa = ceil($toplam_icerik / panel_icerik_say);

            $get_sayfa = isset($this->get_s) ? (int) $this->get_s : 1;

            $sayfa = ($get_sayfa < 1 ? 1 : $get_sayfa);

            if($sayfa > $toplam_sayfa){
                $sayfa = $toplam_sayfa;
            }

            $baslangic = ($sayfa - 1) * panel_icerik_say;

            $bitis = panel_icerik_say;
            
            return[$baslangic, $bitis];

        }else{

            return false;

        }

    }
    
}
NOT: Sınıfı en hızlı ve temiz çalışacak şekilde nasıl düzenleyebilirim? Ayrıca PDOx sınıfını kullanıyorum.
Kodun alt bölümünde yer alan $sinir = [0, 25];//$this->kactane(); satırı yanlış yazmışım konuyu açarken. $sinir = $this->kactane(); olacaktı orası.