Herkese selamlar,

Bugün ki dersimizde PHP 7 versiyonu ile hayatımıza giren ve artık Front-End tarafında da TypeScript gibi diller ile kullanılması zorunlu hale gelmeye başlayan Type Declaration yapısını inceleyeceğiz.

Veri Tipi Güvenliği Nedir?
Öncelikle C#, Java, Swift gibi diller statik veri tipi güvenliğine sahip dillerdir. Buna kıyasla PHP, Javascript gibi diller ise dinamik veri tipi güvenliğine sahip dillerdir.
Bu şu anlama gelir C#, Java, Swift gibi dillerde yer alan değişkenlerin tipleri kodun derlendiği anda belirlenir.
Buna karşın PHP ve Javascript gibi dillerde ise bir değişkenin sahip olacağı tür kodun çalışma anında belirlenir ve kod devam ettiği sürece değişmeye devam eder.

PHP 7 ile Gelen Type Declaration Nedir?
Eğer ki sürekli PHP, MySQL ve Javascript / jQuery gibi diller ile çalışmışsanız ve C# gibi bir dillerde değişken tanımlamaları yapmadıysanız şimdiden uyarıyorum biraz sonra duyup okuyacağınız şeyler hayatı boyunca tişört giymeye alışmış insanların kravat takıp takım elbise ile artık yaşamak zorunda olduğu andakiler kadar sizi boğacaktır. Ama şunu unutmayın ki konfor alanınızdan çıkmazsanız çok yakında kodlarınız çalışmayacak çünkü PHP'nin eski sürümleri çok hızlı depricated olmaya başladı. Günün birinde PHP'de dinamik tipte bir dil olmayı standart haline getirecek.

Öncelikle kısa bir örnek vererek şu veri tipi güvenliği olayını netleştirelim sonrada detaylara geçelim.

Yıllardır aşağıdaki şekilde bir PHP değişken tanımlama işlemi kullanıyorsunuz
$a = 5;
// Kodun ilerleyen kısımlarında ise şunu yapıyorsunuz
$a = "Ali";
// Sonrada şunu yapıyorsunuz
$a = new User();
İşte bu şekilde tanımlama ve kullanımın adı dinamik veri tipi güvenliği ile işlem sağlamak.

Artık PHP 7 ile aşağıdaki şekilde tanımlamalar yapabiliyorsunuz
int $a = 10;
float $b = 3.14;
string $c = 'hello world';
bool $d = true;
array $e = [1, 2, 3];
// Evet fonksiyonlarında geri dönüş tipi veriyorsunuz
function topla(int $a, int $b): int {
    return $a + $b;
}
Şimdi asıl can alıcı noktaya geliyoruz EĞER ki bir aşağıdaki işlemi yaparsanız HATA alıyorsunuz
int $a = 10;
// Buralarda projeniz devam etti sonra şunu yazdınız
$a = "ali";
İşte artık nur topu gibi Error hatanız var

Neden Type Declaration Kullanayım?
Şimdi dürüst olmak gerekirse eğer şuanda bu konuyu PHP ile ilk defa kullanmayı gördüyseniz aklınıza potansiyelde gelecek projenizden binlerce error mesajı düşüncesi geçmiş olabilir.
Kısaca cevap ise EVET o sorunların ve hataların hepsi gerçekleşecek çünkü aslında gerçekleşmek zorundalar.
Bir projenin devamlılığı için en önemli noktaları - hadi buraya BANA GÖRE yazayımda kavga çıkmasın - sırasıyla DÖKÜMANTASYON, GÜVENLİK, STABİLİTE ve MODÜLARİTEDİR.
Type Declaration bize senelerdir umursamadığımız STABİLİTE yi getiriyor.
Kullanıcıda yaş değeri alma işlemini form'da "input:type:int" yaparak veya binlerce JS kütüphanesi kullanarakta isteseniz Lamer gruplar bile network'ten API'nize o değeri "string" olarak gönderip dönüşteki "xx/yy/zz.php" error kodunuzdan Projenizin dizin yapısını öğrenir ve oraya saldırmaya başlayabilirler.
Normal şartlarda Type Declaration olmasaydı bile sizin aşağıdaki gibi GÜVENLİK kontrolleri yapmanız gerekiyordu zaten
function topla($a, $b){
    if (!is_int($a) || !is_int($b)) {
        throw new TypeError('Değerler Sayısal Olmalı');
    }
    return $a + $b;
}
try {
    echo topla(3, '4');
} catch (TypeError $e) {
    echo $e->getMessage(); // Çıktı "Değerler Sayısal Olmalı"
}
Javascript'te bile artık neredeyse SPA yapıları ve TypeScript'in popülerliğini hergün arttırması ile beraber Type Declaration ve Statik Veri Tipi Güvenliği ile tanımlamalar yapmak standartlaşmaya başladı.

Eğer ki şuan kendinize Full-Stack PHP Developer diyorsanız hem Front-End tarafında hemde PHP yani Back-End tarafınızda bu olaya geçmeniz ve alışmanız gelecekte işinizi çok rahatlatacaktır.

Kim bilir belki de bugün aklınıza gelen O muhteşem proje fikri bu yapıyı deneyerek yazmaya başlamanız için en doğru andır

Bol Şanslar ve iyi geliştirmeler