Merhaba arkadaşlar şimdi size bir php classa ya da Türkçesi sınıfa data gönderirken kod okunabilirliği açısından neler yapabiliriz onu göstereceğim. Örnek olarak bir kişi kartı bilgileri göndereceğiz diyelim.
Kişinin adı, soyadı, adresi veya yaşadığı şehir gibi bilgiler olsun. Bunları bir sınıfta işlememiz gerekiyor. Bunları nasıl gönderebiliriz?

Önce örnek sınıf:



Şimdi bu bilgileri bu sınıfta işlemek üzere nasıl gönderebiliriz? Önce normal tek düze gönderebiliriz. Bu kod için bilgileri üstteki sıraya göndermemiz lazım işte isim, soyisim vs hepsi sınıftaki sıraya göre olmalı.



bu kodun çıktısı




Yukarıdaki örneğin sorunu nedir? Normalde basit bilgiler gönderdik ve bunların sırası her türlü tahmin edilebilir. Ya karmaşık bilgiler olsaydı şimdi normalde gönderirken bilgileri işte gönderirken yazdığımız bilgilerde Ankara veya Türkiye yazılarını gören şehir ve ülke adı gönderdiğimizi anlar. Eğer bu bilgiler yerine saçma şeyler yazsaydı kodu okuyan kişi gönderdiğimiz bilginin neye karşılık geldiğini görmek için sınıf kodlarını okumak zorunda kalırdı. Peki şimdi kod okunabilirliği açısından nasıl bir geliştirme yapabiliriz?

İlk yapılabilecek şey PHP 8 özelliği olan Named Arguments. Bir nevi isimlendirme. Bu özellikle birlikte fonksiyonlara değişkenler gönderirken onların isimlerini yazarak gönderebiliriz.



Bu özellik sayesinde kodu okuyan herkes hangi değerlere karşılık neleri gönderdiğimizi biliyor. bu named arguments deki mavi gördüğünüz name kısımları değişkenlerin adları. Yani ihtiyacınız olan değişkenlere karşılık gelen değerlerin karşılığını o değişkenlerini isimleriyle birlikte değerleri girerek gönderebilirsiniz. Üstteki gibi sırası aynı olmak zorunda bile değil çünkü artık hangi değerlerimizin isimleri var. Eğer isterseniz bu değişkenleri dizi olarakta gönderebilirsiniz.



Bu kodun işlevi de aynı. Bu dizideki her şey aslında ihtiyacımız olan değerlerin adı ve karşılığı yani bu dizideki name aslında sınıfımızda $name olarak gidiyor. Hiç ek kod yazmıyoruz. Sınıf kodumuz hala aynı. Kod okunabilirliği açısından yapabileceğimiz ikinci bir yol daha var. PHP zincirleme method kullanımı.

Sınıf kodunu aşağıdaki şekilde değiştiriyorum.






Bu fonksiyonlarla değişkenlere değer atamaya zincirlemeye method deniyor. Artık fonksiyonlara veri göndermemizi aşağıdaki şekilde değiştirebiliriz.



Çıktımız değişmedi.




Peki ben ne öneririm? Açıkçası basit fonksiyonlarda ne named arguments dediğimiz isimlendirilmiş değişkenlere ne de zincirleme methoda gerek yok. İşler biraz karmaşık hale gelip gönderilen değişkenlerle işlem yaptığınızda zincirleme method kullanmanızı tavsiye ederim. İyi geceler.