Genel

PHP 5.6 – Neler Yeni, Neler Eski?

Mevcut 5.4, 5.5.x sürümleri kararlı bir şekilde ilerlerken önce beta sürümünün yayınlandığını görmüştük. Geçtiğimiz günlerde de PHP resmi internet sitesi üzerinden 5.6.0 sürümünün yayınlandığını duyurdu.

Sizler için PHP 5.6 neler getiriyor, neler götürüyor derledik.

PHP 5.6 – Neler Yeni, Neler Eski?

Yeniler?

Constant Scalar Expressions

Yeni sürümün dikkat çeken ilk yeniliği sabit (const) değişken tanımları yapılırken string ya da nümerik işlemleri yapabilme özelliğidir. Ufak bir örnek ile görmüş olalım;

const Bir = 1;
const Iki = Bir * 2;
 
class Test {
const Uc = Iki + 1;
const Bir_Bolu_Uc = Bir / self::Uc;
const Sonuc = 'Uc esittir '.self::Uc;
 
public function i($a = Bir + self::Uc) {
return $a;
}
}
 
echo (new Test)->i()."n";
echo Test::Sonuc;

Çıktı ise:

4

Uc esittir 3

… Operatörü ile Variadik Fonksiyonlar

Daha önceki sürümlerde variadik fonksiyonları kullanırken fonksiyonlara geçirilen parametreleri func_get_args() fonksiyonunu kullanarak toplayıp, işlemlerimize dahil edebiliyorduk. Yeni özellik ile gelen “” (üç nokta) ile bir fonksiyona n adet parametre geçirilebilir durumda. Basit bir örnek üzerinde nasıl çalıştığını görelim;

<?php
function i($d, $opsiyonel = null, ...$parametre) {
    // bir dizi değişken olarak $parametre, eklenen kadar değeri üzerinde tutacaktır.

    printf('$d: %d; $opsiyonel: %d; geçirilen parametre sayısı: %d'."n",
           $d, $opsiyonel, count($parametre));
}

i(1);
i(1, 2);
i(1, 2, 3);
i(1, 2, 3, 4);
i(1, 2, 3, 4, 5);
?>

Örneğin çıktısı;

$d: 1; $opsiyonel: 0; geçirilen parametre sayısı: 0
$d: 1; $opsiyonel: 2; geçirilen parametre sayısı: 0
$d: 1; $opsiyonel: 2; geçirilen parametre sayısı: 1
$d: 1; $opsiyonel: 2; geçirilen parametre sayısı: 2
$d: 1; $opsiyonel: 2; geçirilen parametre sayısı: 3

Not: Dikkat ederseniz örnekte kullanılan fonksiyona $opsiyonel isimli bir parametre geçirildi. Buna PHP dilinde ön tanımlı değiştirge denilmektedir. Konu ile alakalı detaylı bilgiyi Php.net – Function arguments bağlantısında bulabilirsiniz.

… Operatörü ile Argümanları Dışarı Çıkarma

Bir fonksiyona gönderilen/geçirilen dizi ya da Traversable özellikli parametrelerini “” operatörü ile dışarı çıkarabiliriz. Basit bir örnek ile nasıl çalıştığını görelim;

<?php
function topla($a, $b, $c) {
    return $a + $b + $c;
}

$degerler = [2, 3];
echo topla(1, ...$degerler);
?>

Örneğin çıktısı;

6

** Operatörü ile Üs Alma

Önceleri pow() fonksiyonu ile yaptığımız üs alma işlemini bu sürümden itibaren **  operatörü ile yapabiliyoruz. Örnek;

<?php

printf("2 ** 3 ==      %dn", 2 ** 3);


$a = 2;
$a **= 3;
printf("a ==           %dn", $a);

?>

Çıktı ise aşağıdaki gibi olacaktır;

2 ** 3 == 8

a == 8

use function” ve “use const” İfadeleri

Yeni sürümün getirdiği diğer yeni bir özellik ise use operatörünün yanında sınıflar (ve dahi uzay isimlerinde de) içerisinde fonksiyon veya sabit (const) değişkenleri kullanabilmek için function ve const ifadeleri var. Kullanımını bir örnek üzerinde görerek ifadelerin tanımını pekiştirelim;

<?php
namespace AdUzayi {
    const TEST = 1453;
    function i() { echo __FUNCTION__."n"; }
}

namespace {
    use const AdUzayiTEST;
    use function AdUzayii;

    echo TEST."n";
    i();
}
?>

Örnek çıktısı;

1453
AdUzayii

phpdbg ile İnteraktif Debugger

Yeni sürümle beraber SAPI modülüne uygulanmış phpdbg isimli interaktif bir debugger var. Detaylı bilgi için Php.net – phpdbg adresini ziyaret edebilirsiniz.

default_charset ile Encoding

PHP 5.6 sürümünden itibaren, htmlentities(), htmlspecialchars() gibi fonksiyonlarında, php.ini ‘de kullanılan default_charset değeri kullanılabilir durumda.

Daha Büyük Dosya Yükleme

Bu sürümle beraber artık 2 GB boyutunda dosya(lar) yüklenebilecektir.

gost-crypto Hash Algoritması

Yeni sürüme gost-crypto hash algoritması eklendi.

Eskiler?

Elbette yeni sürüme eklenen yeni özelliklerin yanında çıkarılmış, pasifize edilmiş özellikler de vardı. Bu sürümle beraber eskiyen özellikleri de belirtelim.

  • iconv ve mbstring encoding opsiyonları default_charset çerçevesinde ayarlar içerisinde çıkarılmıştır.
    • iconv.input_encoding
    • iconv.output_encoding
    • iconv.internal_encoding
    • mbstring.http_input
    • mbstring.http_output
    • mbstring.internal_encoding
  • $HTTP_RAW_POST_DATA ve always_populate_raw_post_data özellikleri artık E_DEPRECATED tipinde hata üreteceklerdir.

Kaynaklar

Php.net – PHP 5.6 New Features
Php.net – PHP 5.6 Deprecated Features
Code.Tuts+ – Php 5.6: What’s New?

Yorum Yap