lostyazilim
tr.link

Sınıf üzerinde bir işlem yapmıyacaksam neden kurucu metod gireyim ?

14 Mesajlar 2.035 Okunma
lstbozum
tr.link

Nefes Nefes Öğrenci Kullanıcı
  • Üyelik 17.10.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum İzmir
  • Ad Soyad B** E**
  • Mesajlar 556
  • Beğeniler 45 / 32
  • Ticaret 1, (%100)
Sınıf üzerinde bir işlem yapmıyacaksam neden kurucu metod gireyim ?
 

 

wmaraci
reklam

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)
Zorunda değilsin. Sadece sınıfla ilgili bir işlem yaparken öncesinde otomatik yapılmasını istediğin bir işlem varsa kullan.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

Nefes Nefes Öğrenci Kullanıcı
  • Üyelik 17.10.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum İzmir
  • Ad Soyad B** E**
  • Mesajlar 556
  • Beğeniler 45 / 32
  • Ticaret 1, (%100)
Diyelim bir sınıf oluşturum kullanmak istemediğimde silmek yerine

funciton __destruct() {

}

Bunu mu kullanmam gerek ?
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

Nefes adlı üyeden alıntı

Diyelim bir sınıf oluşturum kullanmak istemediğimde silmek yerine

funciton __destruct() {

}

Bunu mu kullanmam gerek ?


Bu sınıfla ilgili yaptığın işlemden sonra otomatik olarak çalışan fonksiyon. Mesela MySQL bağlantısını kapatmak için kullanabilirsin. Ama gerek yok pek. MySQL işlem bitince kapatıyor zaten. Destruct yerine construct yazmalısın başta çalışmasını istiyorsan.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium
wmaraci
wmaraci

4Nirvana 4Nirvana Sabır Kullanıcı
  • Üyelik 14.02.2014
  • Yaş/Cinsiyet 29 / E
  • Meslek Developer
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 32
  • Beğeniler 0 / 9
  • Ticaret 1, (%100)
Ben yapıcı ve yıkıcı fonksiyonlar genelde mysql bağlantı işlemleri için kulllanıyorum.
 

 

Yanlış yolda yürümek doğru yolda beklemekten iyidir.
Beşikten mezara kadar.

Nefes Nefes Öğrenci Kullanıcı
  • Üyelik 17.10.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum İzmir
  • Ad Soyad B** E**
  • Mesajlar 556
  • Beğeniler 45 / 32
  • Ticaret 1, (%100)
Şey diyorum construct ile metodu başladım sonra class test()i kullanmamak için ne yapmak gerek
değişken yok etmek gibi unset ($a) gibisinden nasıl silebilirim illa backspace ile mi silmek gerek ?
 

 

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

Nefes adlı üyeden alıntı

Şey diyorum construct ile metodu başladım sonra class test()i kullanmamak için ne yapmak gerek
değişken yok etmek gibi unset ($a) gibisinden nasıl silebilirim illa backspace ile mi silmek gerek ?


Classı olduğu gibi başka türlü silemezsin. Ama tanımladığın değişken için unset kullanmalısın, evet.

Ek Olarak: Telefondan yazdığım için şu an kodla örnekleyemiyorum. Eğer aklında hala soru işareti kalmış olursa pcye geçtiğimde pm atarsan cevaplarım.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Garbage collector bu işi oldukça verimli şekilde hallediyor. Kendi yazdığınız sınıfları zaten siz gerek görmedikçe instance (canlı obje) haline zaten çevirmezsiniz. Mantığa aykırı! Sadece kullandığınzı framework yada kütüphaneler varsa onlar genelde kullanmadığınzı yada ihtiyaç duymadığınız gereksiz sınıfları context(uygulamanın yaşam bağlamı/sınırları) içine yüklerler.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)

Turgay Can adlı üyeden alıntı

Garbage collector bu işi oldukça verimli şekilde hallediyor. Kendi yazdığınız sınıfları zaten siz gerek görmedikçe instance (canlı obje) haline zaten çevirmezsiniz. Mantığa aykırı! Sadece kullandığınzı framework yada kütüphaneler varsa onlar genelde kullanmadığınzı yada ihtiyaç duymadığınız gereksiz sınıfları context(uygulamanın yaşam bağlamı/sınırları) içine yüklerler.


Arkadaşınki iç rahatlatma olsa gerek. Ben de işini gc ye bırakmayanlardanım. İşim biten nesneyi unset yapıyorum. Güvenlik bakımından da iyi oluyor. Ama class yapısını olduğu gibi silmek, evet, mantığa aykırı.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Sınıf üzerinde bir işlem yapmıyacaksam neden kurucu metod gireyim ?

Kurucu metod, cansız sınıfı canlı hale getirirken sınıfın hazırlanmasına yardımcı olur.

Lakin soruyu ya yanlış algılıyorum yada siz yanlış soruyorsunuz. Sınıf üzerinde işlem yapmayacaksanız, zaten sınıfı niye çağırma gereksinimi duyuyorsunuz?

Konu içinde database işlemleri için her seferinde bir bağlantı açıp, kapatıldığını belirtmiş arkadaşlar. Bu yöntem açıkcası pek kullanılan bir yöntem değildir. Her seferinde db'ye bağlantı aç, kapa ve her seferinde yeni bir bağlantı session'ı oluşturmak hem db hemde kullanılan db baglantı nesnesi için sunucuya ve db'ye gereksiz yük bindirmektir.

Basit bir bakış açısıyla, 10 istek geldi, 10 baglantı sınıfı ayrı ayrı instance'lar oluştu, her instance db'dne bir session kaptı hop 10 session ile db'ye git gel. Bunu 1000 yapsak nesneler, db sessionları havada uçuşuyor.

Php'de varmı bilmem fakat J2EE Application server içinde db ye baglantı sessionları için uygulama sunucusu bir pool(havuz) yaratır. Bu havuz içinde db session'larını uygulama sunucusu yönetir. Ben yazdığım java uygulamalarında bağlantı açık, kapalı ama askıda kalmış yok session objesi ne olmuş gibi bir sıkıntıya düşmem mesela zaten uygulama sunucusu tüm o db işlemlerini(transaction management) olayını thread-safe şekilde halleder.

Eğer PHP 'de DB pooling yada transaction management gibi oturmuş genel çözümler var ise kesinlikle kullanınız.

Yazdığımı anlatan basit bir imaj ;

 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al