Derinlemesine PHP 7.0 İncelemesi

Merhabalar,

Yine uzun süredir ara verdiğim blog yazılarıma kaldığım yerden devam ediyorum. Son zamanlarda PHP geliştiricilerin kafasını karıştıran 7.0 güncellemesi için internette denk geldiğim bir yazının Türkçe’ye uyarlamasını sizlerle paylaşmak istiyorum. Öncelikle belirtmek istiyorum ki kendim de bilgisayarımda PHP 7.0’a geçiş yaptım; ancak yine de nette yeteri kadar geri dönüş olmadığını düşündüğümden, mevcut altyapılarını riske atmak istemeyen kullanıcılar için bu güncellemeyi şu an için önermiyorum. Güncellemek isteyen kullanıcılar için de biraz zaman alması gereken birkaç işlem yapması (eski sürümü silme, paket, eklenti yükleme vs.) gerektiğini hatırlatmak isterim. Sonrasında mevcut projenizde kod bazlı ufak değişikliklere de gitmeniz gerekebilir. PHP 7.0 tarafından desteklenen yeni özellikler olsa da, kaldırılan bazı özellikler de mevcut. Şimdi yazıya geçelim.

PHP 7.0 3 Aralık 2015’te yayımlandı ve şu ana kadar birçok kişi onun muhteşem özelliklerini öğrenmedi ve kullanmadı. Bu yazıyı PHP 7.0’ın özelliklerini henüz öğrenmemiş geliştiriciler için yazdım ve eğer siz bile bu özellikleri biliyorsanız, yine de bu yazıdan bir şeyler öğreneceğinize eminim.

Rasmus Lerdorf(PHP’nin yaratıcısı), PHP 7 üzerinde çalışan uygulamaların performansının %100 arttığını iddia ediyor. Hafıza kullanımı düşük olduğundan, eğer birçok sunucu kullanıyorsanız, PHP 7.0 sizin için önemli bir güncelleme. PHP 7.0’daki büyük değişikliklerden bir tanesi de yenilenmiş Zend Makinesi (PHPNG). Yeni makine daha hızlı, hafıza kullanımı azaltılmış ve kodunuzu çalıştırabilmek için daha az donanım gerektiren yeşil, doğa dostu bir yapıya sahip.

PHP 7.0’DAN NE KALDIRILDI?
  1. MYSQL:
    Orijinal MySQL uzantıları PHP 5.5’de terk edilmişti. mysql_connect(), mysql_query() gibi fonksiyonlar kullanıyorduk. Artık tüm veritabanı operasyonları için gelişmiş MYSQL – MySQLi veya PDO bağlantılarının kulllanılması tavsiye ediliyor. Eğer PHP 7 kullanmaya başladıysanız (yoksa en kısa sürede başlamalısınız), bu eklenti tamamen kaldırıldığı fark etmişsinizdir. Eğer MySQL eklentisini kullanmak istiyorsanız, https://pecl.php.net/ adresinden bulabilir ve kurulum yapabilirsiniz. PECL, PHP uzantıları için bir depodur. Geliştirme için kullanılan ve bilinen tüm eklentileri barındırır.
  2. POSIX REGEX FONKSIYONLARI:
    PHP bazı regular expression metinler için belirli fonksiyonlar sunar – POSIX Regular fonksiyonları ve PERL Style Regular Expression. PHP 7 ile ereg(), ereg_replace(), split() gibi POSIX fonksiyonlarını kullanamazsınız; ama onun yerine PERL uyumlu Regex(PCRE) fonksiyonlarını, yani preg_match(), preg_replace(), preg_split() kullanabilirsiniz. Eğer hala POSIX REGEX fonksiyonlarına uygulamanızda ihtiyaç duyuyorsanız, https://pecl.php.net/ adresinden temin edebilirsiniz.
  3. ALTERNATIF PHP ETIKETLERI:
    PHP 7’de, ASP etiketleri olan <% %> veya <%= %> ve HTML script etiketleri olan <script languages=”php”></script> kullanamazsınız.
  4. NEW ILE REFERANSA GÖRE ATAMA YAPMA:
    Bu PHP 7 ile artık geçerli değildir. $car =& new Car(); Bu PHP 5’te de gerçekten gerekli değildi; çünkü nesneler her zaman referansa göre yaratılır.
  5. KONFIGÜRASYON DOSYALARINDAKI YORUMLAR:
    Bunun kullanımına PHP 5.3’te karşı çıkılmıştı; ama PHP 7 ile artık .ini dosyalarınızda ‘#’ işaretinin kullanımı tamamen kaldırıldı. Kullanılması gereeken karakter artık noktalı virgül ‘;’.
  6. PASSWORD_HASH()’TEKI SALT OPSIYONU:
    password_hash() ‘teki salt opsiyonun kullanımına da artık yazılımcıların güvenli olmayan hash yaratma olasılığı göz önünde bulunudurularak karşı çıkılıyor.

Buradan daha fazlasını öğrenebilirsiniz: https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7

Yani PHP 7’de bu kaldırıldı; ancak yeni özellikler neler? İşte bunlar PHP 7 ile gelen yeni özellikler:

Uzay Gemisi Operatörü <=>
Uzay gemisi operatörü (birleştirilmiş kıyaslama operatörü olarak da geçer) iki ifadeyi kıyaslamak için kullanılır. Soldaki ifade sağdakinden küçük olduğu zaman -1, 0, or 1 değeri döner. Bu fonksiyon ayrıca metin ifadeleriyle de çalışır. Bu genellikle callbacklerde sıralama değerleri için kullanılır.

$a = 6; $b = 8, $c = 6
echo $a <=> $b ; // 1
echo $b <=> $a; // -1
echo $a <=> $c; // 0

$a = “a”; $b = “”, $c = 6
echo $a <=> $b ; // 1
echo $b <=> $a; // -1
echo $a <=> $c; // 0

Null Birleştirme Operatörü ??
Null birleştirme operatörüyle, isset() fonksiyonu kullanmanıza gerek yoktur. Eğer null değilse ilk operandı, yoksa sonuncuyu döner. Bu yeni özellikle değerleri ayrıca zincirleyebiliriz. Soldan başlayarak sadece null olmayan ilk değeri döner. Hatırlatma, bu PHP’deki sadece null değerler için kullanılır, boş metin ifadeleri için değil.

$food = $_GET[‘food‘] ?? ‘Eba‘;
echo $food; // if $_GET[‘food’] is null echo’s Eba;

// chain null coalescing
$favourite_food = ‘Garri‘;
$my_food = $null ?? $favourite_food ?? ‘Eba‘;
echo $my_food; // Garri

define() İle Dizi Sabitleri Tanımlamak
Dizi sabitleri artık define()ile tanımlanabilir. PHP 5.6’da, bu sadece const değeri kullanılarak yapılabiliyordu.

define(‘COUNTRIES’, [
‘Nigeria’,
‘Ghana’,
‘South Africa’
]);
echo COUNTRIES[1]; // outputs “Nigeria”

Yazının ilk bölümü burada sona erdi. İkinci bölümüyle tekrardan görüşmek üzere. Şimdilik hoşçakalın.