PHP kategorisine ait yazılarım.

PHP: Nesne Yönelimli Programlama - Ders 4


Bir önceki yazımda sınıf sabitleri ve static anahtar sözcüğünden bahsetmiştim. Bu yazımda ise sihirli yöntemlerden bahsedeceğim.

Sihirli Yöntemler Nedir? 

Sınflarda, belirli olaylardan sonra tetiklenen özel metot isimlerine Sihirli Yöntemler denir.

Sihirli Yöntemler

İsim Açıklama
__construct() Kurucu metottur. Sınıftan bir nesne yaratıldığında ilk olarak çalışır. Genelde sınıf çalıştığında gerçekleşecek işlemlerin yapıldığı metottur.
__ destruct() Yıkıcı metottur. Sınıfla ilgli bütün işlemler tamamlandıktan sonra çalışır. Genelde, sınıf özelliklerinin temizlenmesinde kullanılır.
__clone() Sınıf nesnesi, clone anahtar sözcüğü ile kopyalanmak istendiğinde tetikilenir.
__toString() Sınıf nesnesi, ekrana yazdırılmak istendiğinde tetiklenir.
__sleep() Sınıf nesnesini serileştirmek( serialize() fonksiyonu kullanıldığında) istendiğinde tetikilenir.
__wakeup() __sleep() metodunun tam tersi unserialize() fonksiyonu kullanıldığında tetikilenir.
__invoke() Sınıf nesnesi, bir metot olarak çağrılırsa tetiklenir.
__set() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe veri girilirken tetiklenir
__get() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özellik okunurken tetiklenir
__isset() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe isset() veya empty() fonksiyonları uygulandığında tetiklenir.
__unset() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir özelliğe unset() fonksiyonu uygulandığında tetiklenir.
__call() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir metot çağrıldığında tetiklenir.
__callStatic() Sınıf içinde olmayan yada dışarıdan erişilemeyen bir statik metot çağrıldığında tetiklenir.


PHP: Nesne Yönelimli Programlama - Ders 2


Bir önceki yazımda OOP nedir, class nasıl tanımlanır ve class'lar ile ilgili temel bilgilerden bahsetmiştim. Bu yazımda ise görünürlükten bahsedeceğim.

Görünürlük Nedir? 

Özellik veya metotlara verdiğimiz, erişme yetkisine denir.

public: Heryerden erişmek için public kullanılır.

private: Yalnızca sınıfın kendi içinde erişmek için private kullanılır.

protected: Sınıfın kendi içinde ve miras alınan sınıflarda erişmek için protected kullanılır.



PHP: Nesne Yönelimli Programlama Giriş

Nesne yönelimli programlama bir başka deyişle OOP( Object Oriented Programming) büyük çaplı projelerde kodlarınızı karmaşıklıktan kurtarmak için kullandığımız programlama yaklaşımıdır.

E-ticaret, portal gibi platformları OOP'siz yani yapısal programlamayla yazmaya kalkışırsanız ilk başlarda rahat gelir fakat özellik ekledikçe yazılım sizin kontrolünüzden çıkar. Takım çalışması için de berbat bir durumdur. 

OOP'yi kısaca bir problemi parçalara bölüp, bu parçaları da nesnelere dönüştürerek çözüme ulaştırmak diye açıklasam sanıyorum yanlış olmaz. Daha detaylı bilgi için wikipedia açıklamasını okumanızı tavsiye ederim.

Yazımın başında belirtmek istediğim bir konu daha var. Takım çalışması için OOP'de tek başına yeterli değildir. Günümüzün popüler tasarım mimarisi MVC'yi kullanmanızı şiddetle tavsiye ediyorum. Eğer yazılıma yeni başlıyorsanız ilk öğreneceğiniz yapısal programlama olmalıdır.  Ardından OOP en son olarak da MVC mimarisinde bir framework olmalıdır. Aksi takdirde bir şeyler hep eksik kalır.

Örnek vereyim yapısal programlamada for, foreach, while, do while gibi kodların aralarında ki farkları bilmeden yada OOP'de User::find(1); ifadesinin statik fonksiyon olduğunu bilmeden bir sonraki aşamaya geçerseniz programlamanız hiç bir zaman tam oturmaz.

Neyse bu kadar ön bilgiden sonra geçelim anlatıma. Anlatım sırasını tartışmasız en iyi php kaynağı php.net'e göre hazırladım.



PHP Kod Standartları

Kurumsal bir firmada çalışıyorsanız yada kendi ekibinizle kod yazıyorsanız. Kodların düzeni çoğunlukla sorun olmuştur. Kimi her gördüğü ifadeyi UpperCase yazar kimi camelCase. Kimi if'in yanına süslü parantezi "{" kimi alt satırına süslü parantezi koyar. Böyle uzayıp gider.

Sonuçta her türlü  yazdığınız kod çalışır fakat sizin kodlarınıza başka biri baktığı zaman yada tam tersi siz başkasının kodlarına baktığınız zaman bi afallarsınız. Bu ufak tefek detaylar yüzünden projeler uzayıp gider ve sizi daha çok uğraştırır. 

Çözüm nedir?

Projeye başlamadan önce neyi nasıl kullanacağınızı karar verin, karar vermiş olduğunuz kuralların dökümantasyonunu hazırlayın. Bu sizin ekibinizin kod standartı olacaktır. Fakat bu yöntem hem sizi uğraştırır hem de yeterli değildir çünkü çalışma arkadaşlarınız değiştiğinde standartlarınızda  zırt pırt değişir. Daha güzel bir yöntem var o da yazılım dünyasının abileri toplanmış oylama sonucu belli kurallar belirlemişler ve bu kuralları oylamaya devam ediyorlar. Bu çatının adı "PHP Framework Interop Group". Sizlerde bu gruba katılabilir yorumlarda bulunabilirsiniz.

Kimler var?

  • CakePHP
  • Composer
  • Doctrine
  • Joomla
  • Laravel
  • phpBB ...

    PSR - PHP Standart Tavsiyeleri

    PHP-FIG tarafından 4+1 konu ele alınmış. Bunlar:

    • PSR-0 : Autoloading(Otomatik Yükleme) Standartları { Artık Önerilmemektedir. PSR-4 yeni alternatifidir }
    • PSR-1 : Temel Kodlama Standartları
    • PSR-2 : Kodlama Stili 
    • PSR-3 : Logger Interface
    • PSR-4 : Geliştirilmiş Autoloader