PHP 7 İle Gelen Yenilikler
7.x versiyonuyla PHP’ye bir çok “yeni özellik” geldi. Aslında yazılım dünyasında yıllardır var olan özellikler, PHP ekosistemine “yenilik” olarak sunuldu demek daha doğru olur.
SCALAR TYPE DECLARATIONS
Artık method ve fonksiyonlarımıza geçtiğimiz parametrelere primitive veya reference tipler tanımlayabiliyoruz.
Eğer parametrenin null gelme ihtimali varsa, tür tanımının başına soru işareti eklememiz gerekiyor. Böylece bu alanın nullable olduğunu belirtmiş oluyorsunuz.
Class property’ler için de tip tanımlama desteğinin bu özellikle birlikte gelmesini beklerdim. Ancak ben makaleyi hazırlarken paylaşılan 7.4 versiyonuyla yeni eklendi.
Yani artık;
private int $userId;
private string $userName;
gibi property’ler için de tür tanımı yapılabiliyor.
Not:
Artık hayatımızda strict_types modu var. Bu modu aktif ettiğimizde, integer türünde değer beklediğiniz bir alana, string türünde bir değer gönderilirse TypeError fırlatılıyor.
Bu kuralın tek istisnasının;
float türünde bir alana, integer türünde bir değer geçilebilmesi olduğunu da belirteyim.
strict_types modu aktif olduğunda, hemen aşağıda inceleyeceğimiz return type özelliğininde etkilendiğini belirteyim. Yani integer türünde değer döneceğini belirttiğiniz method’tan, string türünde bir değer dönerse yine TypeError exception fırlatılacaktır.
RETURN TYPE DECLARATIONS
Artık method’lara dönmesi gereken türleri söyleyebiliyoruz. Dönüş tipleri için de primitive veya reference türler kullanılabilir.
Eğer geriye null dönme ihtimaliniz varsa, tür tanımının başına soru işareti ekleyebilirsiniz. Yani int yerine ?int olarak tanımladığınızda, bu method’u çağıran yerlerde instance / null check yapmanız gerekiyor.
Bknz:
if ( $user->getRole() instanceof Permission ) { … }
NULL COALESCING OPERATOR
Artık hayatımızda iki soru işaretini yan yana yazarak kullandığımız yeni bir operatörümüz var. Bu operatör sayesinde; Değişken tanımlanmışsa ve değeri null değilse kendisini, değilse belirteceğimiz değeri referans almasını sağlıyoruz.
Örnek:
$username = $_SESSION[‘username] ?? ‘ziyaretçi’;
Önceden tenary operatör ile şöyle yapıyorduk:
isset($_SESSION[‘username]) ? $_SESSION[‘username] : ‘ziyaretçi’;
SPACESHIP OPERATOR
Bu operatör sayesinde artık yönlü bir karşılaştırma yapabilirsiniz. Karşılaştırdığınız değerler eşitse 0 dönüyor. İlk değer (sol) büyükse 1, ikinci değer (sağ) büyükse -1 değeri dönüyor.
echo 2019 <=> 2019; | 0 döner.
echo 2019 <=> 2018; | 1 döner
echo 2018 <=> 2019; | -1 döner
Umarım faydalı olmuştur.
İbrahim Hızlıoğlu
web: https://www.ibrahimhizlioglu.com
linkedin: https://www.linkedin.com/in/ibo/
github: https://github.com/ibo
twitter: https://twitter.com/ibrahimhizliogl