5.00 / 1 oy

PHP'de declare(strict_types=1) kodu ne işe yarar?

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)

PhpCoder

17.03.2021 00:18

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
PHP'de declare(strict_types=1) kodu ne işe yarar?

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.