PHP'de değişkenlerin tip dönüşümlerinin otomatik olarak yapıldığını ve değişken türlerinin belirtilmesine gerek olmadığını biliyoruz. Örneğin bir sayının karesini yazdıran bir fonksiyona gönderdiğimiz parametre int de olsa string de olsa hata vermeden çalışıyor.
bkz: PHP'de Veri Tipleri
bkz: PHP'de Casting işlemi nasıl yapılır?
bkz: PHP'de Fonksiyon Tanımlamak ve Çağırmak
<?php
karesiniHesapla(5); //25
karesiniHesapla("5"); //25
function karesiniHesapla($sayi)
{
echo $sayi * $sayi;
}
?>
Her ne kadar ikinci satırda yapılan işlem hata üretmiyor olsa da doğru bir kod yazım uygulaması değildir. Sayısal işlemlerde tüm değişkenlerin sayısal değerler olması beklenir.
Özellikle çok kişinin ortak olarak geliştirdiği projelerde bu gibi özensiz kod yazımlarının önüne geçebilmek için yazılan kodlarda uyulması gereken değişken kullanımı kuralları için declare(strict_types=1) ifadesi kullanılır. Şimdi aynı işlemi tekrar deneyelim.
<?php
declare(strict_types=1);
karesiniHesapla(5); //25
karesiniHesapla("5"); //hata
function karesiniHesapla(int $sayi)
{
echo $sayi * $sayi;
}
?>
Bu sefer karesiniHesapla fonksiyonunun bir int parametre beklediğini belirttik ve kodun üst kısmında yazdığımız declare (strict_types=1) satırı ile türlerin doğru kullanımının zorunlu olduğunu ekledik. Böylece int veri tipinde bir parametre bekleyen karesiniHesapla fonksiyonuna string parametre gönderdiğimizde aşağıdaki gibi bir hata almış olduk.
Fatal error: Uncaught TypeError: Argument 1 passed to karesiniHesapla() must be of the type int, string given, called in C:\...\stricttypes.php on line 5 and defined in C:\Program Files\Ampps\www\ornekler\stricttypes.php:8 Stack trace: #0 C:\Program Files\Ampps\www\ornekler\stricttypes.php(5): karesiniHesapla('5') #1 {main} thrown in C:\...\stricttypes.php on line 8
bkz: PHP'de pi sayısını pi fonksiyonu ile kullanmak
bkz: PHP'de min ve max fonksiyonları ve örnekler
bkz: PHP'de mutlak değer bulmak (abs fonksiyonu)
bkz: PHP'de rastgele sayı üretmek (rand fonksiyonu)
bkz: PHP'de sayıları alttaki tamsayıya yuvarlamak (floor fonksiyonu)