• 03-10-2020, 01:05:25
    #1
    Arkadaşlar selam uzun süredir front-end olarak kendimi geliştiriyorum. Ama bunun yanında html temaları wp'ye entegre etmek istedim böylelikle php öğrenmeye başladım en temel php yi biliyordum if sorgusu döngüler klasik değişken basit fonksiyonlar vb vb ama sıfırdan php öğrenmek için denme yanılmalar yapmaya başladım ilk olarak araştırmalar ile ve kendi kafamda kurduklarım ile bir veritabanı yönetim class'ı oluşturdum bu class'ın içinde tablo oluşturma, tablo silme, tabloda ki tüm veriyi çekme, tabloda ki tek satırı çekme, tabloda ki belirli bir kolondaki verileri çekme, tabloda satır güncelleme ve tabloda satır silme özellikleri var ve birde ekleme tabi ki birde satır sayısı alma işlemi varmış. Bağlanma ve bağlantıyı kesme dışında. Şimdi sql sorgularını falan çok bilmiyorum yeni yeni öğreniyorum ama mesela kullanıcıdan veri alırken prepare bind ve execute kullanmamız gerekiyormuş. Bende bulduğum bilgilere göre bu class'ı oluşturdum çalışma konusunda sıkıntı yok her şey tamamen çalışıyor. Lakin ne kadar sağlıklı veya ne kadar güvenlikli yaptım bunlar hakkında bu işte cidden iyi seviyede olanlar karar verebilir diye düşünüyorum. Ve istiyorum ki bu class'ı inceleyin ve burası böyle olabilir daha iyi olabilir şöyle yapalım gibi yorumlar istiyorum hatta isteyen olursa bu class'ı geliştirip githubda yayınlayalım.

    @awoken; Hocam bu işlerde baya iyi olduğunuzu düşünerekten etiketliyorum sizi. Aşağıdan inceleyip yorumlarınızı belirtirseniz çok memnun olurum.


    https://www.halilbeycan.com/bcdb-class.rar
    • websimetri
    websimetri bunu beğendi.
    1 kişi bunu beğendi.
  • 03-10-2020, 01:46:23
    #2
    inceledim başlangıç için iyi gayet güzel
    şöyle geliştirebilirsin
    __contrust ile pdoya bağlanıp__destruct ile bağlantıyı kapatabilirsin

    ve challenge olarak şunları yapabilirsin :d
    $db->select('id')->from('users')->where('id',1)->getOne();
    (select default *)
    $db->from('users')->where(['id',1,'<>')->getOne();
    $db->from('users')->where('status',1)->where(''rank",3)->getAll();
    $result = $db->from('users')->insert($params);
    bla bla

    infinite queue ile uğraşmak baya keyifli bence kolay gelsin :d
  • 03-10-2020, 02:04:43
    #3
    darness adlı üyeden alıntı: mesajı görüntüle
    inceledim başlangıç için iyi gayet güzel
    şöyle geliştirebilirsin
    __contrust ile pdoya bağlanıp__destruct ile bağlantıyı kapatabilirsin

    ve challenge olarak şunları yapabilirsin :d
    $db->select('id')->from('users')->where('id',1)->getOne();
    (select default *)
    $db->from('users')->where(['id',1,'<>')->getOne();
    $db->from('users')->where('status',1)->where(''rank",3)->getAll();
    $result = $db->from('users')->insert($params);
    bla bla

    infinite queue ile uğraşmak baya keyifli bence kolay gelsin :d
    Merhaba yorumunuz için teşekkür ederim söyleminiz üzerine yapıcı ve yıkıcılar diye geçen fonksiyonlar hakkında araştırma yapmaya başladım. Bunun dışında genel olarak php pdo içinde kullanılan fonksiyonlara ve sorgulara bakmaktayım. Lakin genel olarak işlerimi for foreach gibi döngüler ile görüyorum şuanlık lakin bunların şuanlık işimi gördüğünü biliyorum ve yetiyor ama doğrusu olduğunu düşünmüyorum kısa yolu vardır diziye foreach ile açmak yerine array_keys vb kullanmak gibi lakin çok bilmiyorum. Onun dışında ben bağlantıyı yapıp close ile kapatıyorum yani sayfa yükleniminin sonunda peki her sorgu için bağlantıyı açsam sorgu bittikten sonra bağlantıyı kapatsam ne olur performans açısından birde güvenlik yani sql injection gibi olaylardan kaçınmak için nelere dikkat etmem gerekiyor yerine göre query ve prepare kullanımı dışında başka olaylarda vardır diye düşünüyorum. Birde bazı sql sorgularında "`" şu değişik tek tırnak kullanılıyor ve onun yerine ' bu düzgün tırnak kullanınca çalışmıyor bunun anlamı nedir acaba.
  • 03-10-2020, 02:18:18
    #4
    Birde örnek classlara baktım bazıları fonksiyonları static olarak tanımlamış yani gerek var mı? Anlam veremedim static'i değişkende kullanıyorum ama fonksiyon da tam olarak işlevi ne anlam veremedim şahsen aynı mantık ama neden veriyi tutma gereksimi duyuyor yani okuduğum bir makalede anladığım şu $degisken = new class(); kullanmak yerine sanırım direkt class::fonksiyon şeklinde kullanmaya yarıyor.

    @darness; Hocam __construct ve __destruct fonksiyonlarını araştırdım anladım öğrendim sayılı __construct class çalıştırılınca direkt çalışıyor böylece benim class->connet dememe gerek kalmadan gerekli bilgileri class( dizi ) şeklinde işlem yapmama olanak tanıyor bağlantı kuruluyor lakin __destruct fonksiyonuda kendisi çalıştığı halde okuduğuma göre db bağlantısı hiç bir şekilde kesilmiyor $bcdb->close() şeklinde çağırdığım gibi yine $bcdb->__destruct() şeklinde çağırırsam kesiliyor anlam veremedim pek bu __destruct() fonksiyonuna.

    __destruct'ın olayınıda şimdi anladım diğeri yapıcı bu yıkıcı diğeri oluşunca çalıştığı gibi buda yok olunca çalışıyor yani en sonda değişkenimizi unset yapmamız gerekiyor.
  • 03-10-2020, 02:34:23
    #5
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar selam uzun süredir front-end olarak kendimi geliştiriyorum. Ama bunun yanında html temaları wp'ye entegre etmek istedim böylelikle php öğrenmeye başladım en temel php yi biliyordum if sorgusu döngüler klasik değişken basit fonksiyonlar vb vb ama sıfırdan php öğrenmek için denme yanılmalar yapmaya başladım ilk olarak araştırmalar ile ve kendi kafamda kurduklarım ile bir veritabanı yönetim class'ı oluşturdum bu class'ın içinde tablo oluşturma, tablo silme, tabloda ki tüm veriyi çekme, tabloda ki tek satırı çekme, tabloda ki belirli bir kolondaki verileri çekme, tabloda satır güncelleme ve tabloda satır silme özellikleri var ve birde ekleme tabi ki birde satır sayısı alma işlemi varmış. Bağlanma ve bağlantıyı kesme dışında. Şimdi sql sorgularını falan çok bilmiyorum yeni yeni öğreniyorum ama mesela kullanıcıdan veri alırken prepare bind ve execute kullanmamız gerekiyormuş. Bende bulduğum bilgilere göre bu class'ı oluşturdum çalışma konusunda sıkıntı yok her şey tamamen çalışıyor. Lakin ne kadar sağlıklı veya ne kadar güvenlikli yaptım bunlar hakkında bu işte cidden iyi seviyede olanlar karar verebilir diye düşünüyorum. Ve istiyorum ki bu class'ı inceleyin ve burası böyle olabilir daha iyi olabilir şöyle yapalım gibi yorumlar istiyorum hatta isteyen olursa bu class'ı geliştirip githubda yayınlayalım.

    @awoken; Hocam bu işlerde baya iyi olduğunuzu düşünerekten etiketliyorum sizi. Aşağıdan inceleyip yorumlarınızı belirtirseniz çok memnun olurum.


    https://www.halilbeycan.com/bcdb-class.rar
    Bir bağımlılık haline getirip bunu kendi projelerinizde kullanabilirsiniz ancak illuminate/database (Eloquent ORM) varken pek tercih edilebilir mi tartışılır kod yapısı temiz ve anlaşılabilir en azından neyin istendiği koda bakıldığında anlaşılıyor bir de backende javascript ile değilde php ile başlamanız sizi çok hantallaştırır php artık framework dışında makarna kod yazılabilecek bir dil olmaktan çıktı
  • 03-10-2020, 12:18:34
    #6
    Üyeliği durduruldu
    Merhaba, ellerinize sağlık öncelikle. Biraz inceledim ve birkaç tavsiyem olacak.
    • Kullanıcı çıktıyı ister array, isterse de object olarak alabilmeli, bunun tercihini kullanıcıya bırakmak gerekli.
    • $where değerini get_table fonksiyonuna paslamak yerine şu şekilde yapsak daha iyi olmaz mı: $this->select('*')->where('id = 5')->get_results() Mesela buna benzer bir syntax Codeigniter 3'te kullanılıyor, oradaki mantığı incelemenizi tavsiye ederim.
  • 03-10-2020, 14:25:08
    #7
    awoken adlı üyeden alıntı: mesajı görüntüle
    Merhaba, ellerinize sağlık öncelikle. Biraz inceledim ve birkaç tavsiyem olacak.
    • Kullanıcı çıktıyı ister array, isterse de object olarak alabilmeli, bunun tercihini kullanıcıya bırakmak gerekli.
    • $where değerini get_table fonksiyonuna paslamak yerine şu şekilde yapsak daha iyi olmaz mı: $this->select('*')->where('id = 5')->get_results() Mesela buna benzer bir syntax Codeigniter 3'te kullanılıyor, oradaki mantığı incelemenizi tavsiye ederim.
    Teşekkürler hocam bir çok yeri değiştirdim bu söylediklerinizide dikkate alacağim obje olarak ciktj vermem diziye gore daha hizli yazilmasindan ve daha guzel bir goruntu sunmasindan dolayi ana haklisiniz tercihi kullaniciya birakmak lazim acaba bunu beraber gelistirsk ve githubda yayinlasak olur mu bu db yonetimine uygun birde uyelik yonetim sistemi hazirliyorum wp nin is logged in is admin user meta vs vs sistemine benzer ama bu mysql de ki sistemi cok bilmiyorum nereye gore varchar neye gore varchar degeri birde inceledigimde wp nin user meta sisteminde value haric benzersiz verilmis ama onlar hep ayni oluyo yani anlayamadim pek. Yani bunlari yapip paylasabilir miyiz zamaniniz var ise. Birde guvenlik ve performans acisindan onerinz nedir.
  • 03-10-2020, 14:46:05
    #8
    awoken adlı üyeden alıntı: mesajı görüntüle
    Merhaba, ellerinize sağlık öncelikle. Biraz inceledim ve birkaç tavsiyem olacak.
    • Kullanıcı çıktıyı ister array, isterse de object olarak alabilmeli, bunun tercihini kullanıcıya bırakmak gerekli.
    • $where değerini get_table fonksiyonuna paslamak yerine şu şekilde yapsak daha iyi olmaz mı: $this->select('*')->where('id = 5')->get_results() Mesela buna benzer bir syntax Codeigniter 3'te kullanılıyor, oradaki mantığı incelemenizi tavsiye ederim.
    Bu arada get_table'da ki $where şey için ASC DESC değeri için yani örnek id ye göre ASC DESC kayit tarihine vb yani tabloda ki tüm satırları çekiyor. Ben döngüler ile dizilere aktarıyordum lakin bunun daha kolay yolu varmış. PDO::FETCH_CLASS bunun gibi parametreler ile bunları belirliyormuşuz.
  • 03-10-2020, 14:47:04
    #9
    Üyeliği durduruldu
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler hocam bir çok yeri değiştirdim bu söylediklerinizide dikkate alacağim obje olarak ciktj vermem diziye gore daha hizli yazilmasindan ve daha guzel bir goruntu sunmasindan dolayi ana haklisiniz tercihi kullaniciya birakmak lazim acaba bunu beraber gelistirsk ve githubda yayinlasak olur mu bu db yonetimine uygun birde uyelik yonetim sistemi hazirliyorum wp nin is logged in is admin user meta vs vs sistemine benzer ama bu mysql de ki sistemi cok bilmiyorum nereye gore varchar neye gore varchar degeri birde inceledigimde wp nin user meta sisteminde value haric benzersiz verilmis ama onlar hep ayni oluyo yani anlayamadim pek. Yani bunlari yapip paylasabilir miyiz zamaniniz var ise. Birde guvenlik ve performans acisindan onerinz nedir.
    Benim maalesef geliştirme için vaktim yok bu aralar.

    Wordpress'in user_meta tablosu hatırladığım kadarıyla kullanıcının özelliklerini saklamak için kullanılıyordu. Mesela admin paneline erişimi var mı, yetkileri neler gibi. Bunu kendi sisteminize şöyle uyarlayabilirsiniz:
    id - user_id - meta_name - meta_value