Bir süredir RC sürümleri yayınlanan ve PHP 7 serisinin ilk önemli güncellemesi olan PHP 7.1 bugün yayınlandı.

PHP 7.1.0 birçok yeni özellik ve iyileştirme içeriyor. Bunlardan bazıları:

Nullable types

PHP dahil birçok programlama dilinde bir değişkenin herhangi bir tür veya null olmasına izin verilir. Bu “null” genellikle bir hatayı ya da dönen değerin eksikliğini ifade eder. Bu, normalde tür bildirimlerini atlayarak, yani PHP’nin dinamik tür sistemini kullanarak yapılabilir. Ayrıca, PHP’deki parametreler için varsayılan bir parametre kullanarak da yapılabilir. Ancak bu durum varsayılan değere sahip olmayan dönüş türleri için geçerli değildir. Bu özellik ile artık, bir değişken türünün başına soru işareti (?) ekleyerek onun null olabileceğini de belirtebileceğiz.

function answer(): ?int {
   return null; //ok
}

function answer(): ?int {
   return 42; // ok
}

function answer(): ?int {
   return new stdclass(); // error
}

Void return type

 Herhangi bir değer dönmeyen fonksiyonlar için void dönüş tipi desteği eklendi.

Iterable pseudo-type

callable‘a benzeyen bu sahte tür, belli bir tür yerine çoklu tür kabul etmeyi sağlıyor. iterable, herhangi bir diziyi ya da Traversable‘ı implement eden nesneyi kabul eder. Bu iki tür de foreach kullanarak tekrarlanabilir ve bir generator içinde yield from ile kullanılabilir.


function foo(iterable $iterable) {
  foreach ($iterable as $value) {
   // ...
  }
}

Class constant visibility modifiers

 PHP’deki sınıflar, sabitler değil, özellik ve metotlarda değiştiricilere (modifiers) izin verir. Bu, kolayca çözülebilir bir tutarsızlıktır ve birçoğunun istediği, hatta olmamasına şaşırdığı bir özelliktir. Bu özellik sayesinde sınıf sabitleri (class constants) public, protected veya private olarak tanımlanabilir. Bunlardan biri kullanılmamışsa public olarak kabul edilir.

list()  için köşeli parantez sözdizimi ve list() içinde anahtar tanımlayabilme

 list() fonksiyonu, değişkenlere bir dizi gibi atama yapar.


$array = ("php", "developer", "gen.tr");

list($a, $b, $c) = $array;

Yukarıdaki kodda list() fonksiyonu, içindeki $a, $b ve $c değişkenlerine sırayla $array dizisinin içindeki değişkenleri atar. Mesela $a = “php” olmuş olur. PHP 7.1 ile birlikte list() şeklinde bir fonksiyona gerek kalmaksızın köşeli parantez kullanarak değişkenlere dizideki değerleri atayabileceğiz.

Şu şekilde:


[$a, $b, $c] = $array;

Diğer özelliği anlatmaya bir örnek vererek başlayalım.


class PHPDeveloper
{
 private $name, $colour, $age, $cuteness;

 public function __construct(array $attributes) {
   $this->name = $attributes["name"];
   $this->colour = $attributes["colour"];
   $this->age = $attributes["age"];
   $this->cuteness = $attributes["cuteness"];
 }
 // ...
}

Gördüğünüz gibi sınıfın özelliklerine, anahtarları kullanarak bir dizinin elemanlarını atıyoruz. Fakat her seferinde dizinin adını, yani $attributes ifadesini tekrar ediyoruz. Artık şu şekilde yazabileceğiz:

class PHPDeveloper
{
 private $name, $colour, $age, $cuteness;

 public function __construct(array $attributes) {
   list(
     "name" => $this->name,
     "colour" => $this->colour,
     "age" => $this->age,
     "cuteness" => $this->cuteness
  ) = $attributes;
 }

 // ...
}

Çoklu istisna tiplerini (Multiple exception types) yakalama

Tek bir catch ifadesiyle birden fazla istisna tipini yakalayabileceğiz.

<?php

try {
 // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
 // Code to handle the exception
} catch (\Exception $e) {
 // ...
}

Bir taşla iki kuş, harika değil mi!

Hepsi bunla sınırlı değil. PHP 7.1’de başka özellikler ve değişiklikler de var.

PHP 7.0.x sürümlerinden PHP 7.1.x serisine geçiş için gerekli adımları şu sayfada bulabilirsiniz. Yeni özelliklerin detaylı bilgileri ve daha fazla örnek için de şu sayfaya gözatabilirsiniz.