PHP 7 İle Gelen Yenilikler

İbrahim Hızlıoğlu
2 min readNov 5, 2019

--

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.

primitive tipleri tür olarak belirleyebildiğiniz gibi, referans tipleri de tanımlayabilirsiniz.

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

--

--