PHP 7.4’te değişen sınıflar ve arayüzler nelerdir?

PHP 7.4 sürümü, birçok yeni özellik ve iyileştirme ile birlikte gelmiştir. Bu sürümde özellikle sınıflar ve arayüzler üzerinde bazı önemli değişiklikler yapılmıştır. Bu yazıda, PHP 7.4’te sınıflar ve arayüzlerle ilgili olarak gerçekleştirilen yenilikler ve değişiklikler ele alınacaktır.

Özellik Vurgusu: Typed Properties

PHP 7.4 ile birlikte “typed properties” özelliği tanıtılmıştır. Bu özellik, sınıf içinde tanımlanan özelliklerin belirli bir türde olmasını zorunlu kılar. Yani, bir özellik tanımlanırken türü açıkça belirtilir ve bu türde olmayan bir değer atanması durumunda bir hata meydana gelir. Bu özellik, veri tutarlılığını artırmak ve daha güvenli bir kod yazımına olanak tanımak amacıyla geliştirilmiştir. Aşağıda bir örnek verilmiştir:

“`php
class User {
public string $name;
public int $age;

public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
}
“`

Burada `$name` özelliği bir `string` türünde, `$age` özelliği ise `int` türünde tanımlanmıştır. Bu sayede, yanlış türde değer atamaları önlenmiş olur.

Arrow Functions (Ok Fonksiyonları)

PHP 7.4, kısa fonksiyon tanımına olanak tanıyan “arrow functions” özelliğini de eklemiştir. Ok fonksiyonları, daha okunabilir bir yazım sunar ve temel işlevler için kısa bir biçimde fonksiyon tanımlamayı sağlar. Ok fonksiyonları, dışarıdan değişkenleri kullanabilme yeteneğine sahiptir. Aşağıda bir örnek verilmiştir:

“`php
$square = fn($n) => $n 2;
echo $square(4); // 16
“`

Bu yapı, daha az kod yazarak fonksiyonel programlamayı teşvik eder ve kodun genel yapısını basitleştirir.

Dışarıdan Sınıf ve Arayüz Yükleme

PHP 7.4, `preloading` özelliği sunarak sınıf ve arayüzlerin dışarıdan yüklenmesini mümkün kılmıştır. Bu özellik, belirli bir sınıf ya da arayüzün çalıştırma süresi boyunca bellekte tutulmasını sağlar. Bu durum, performansı artırabilir. Ancak dikkat edilmesi gereken husus, preloading’in yalnızca ZTS (Zend Thread Safety) destekli web sunucularında çalıştığıdır.

Değiştirilebilir (Mutable) Özellikler

PHP 7.4 ile birlikte, değiştirilebilir (mutable) özelliklerin kullanımında bir iyileştirme yapılmıştır. Bu özellikler, tanımlandıkları sınıf içinde herhangi bir yerden erişilip değiştirilmesine olanak tanır. Özellikle nesne yönelimli programlamada sıklıkla kullanılmaktadır.

“`php
class Person {
public array $info = [];

public function setInfo(array $info): void {
$this->info = $info;
}
}
“`

Yukarıdaki örnekte, `$info` özelliği sınıfın her yerinden erişilebilir ve değiştirilebilir durumdadır.

Geliştirilmiş `foreach` Desteği

PHP 7.4, `foreach` döngüsünde daha esnek bir yapı sunmaktadır. Artık özelleştirilmiş nesneler, nesne özelliklerine doğrudan erişim sağlar. Daha önceki sürümlerde sadece dizilere izin verilirken, bu yeni değişiklik nesne yönelimli programlamaya daha fazla destek sunmaktadır.

“`php
class Collection implements IteratorAggregate {
private array $items = [];

public function getIterator(): Traversable {
return new ArrayIterator($this->items);
}

public function add($item): void {
$this->items[] = $item;
}
}
“`

`Collection` sınıfındaki `getIterator` metodu sayesinde, `foreach` döngüsünde bu nesne üzerinde dönmek mümkündür.

Lazy Referencing (Tembel Referanslar)

PHP 7.4, tembel referanslarla ilgili yeni bir özellik tanıtmıştır. Bu özellik sayesinde, özelliklerin yalnızca ihtiyaç duyulduğunda değerlendirileceği anlamına gelir. Örneğin, büyük veri yapıları ile çalışan uygulamalarda gereksiz bellek tüketiminin önüne geçmeyi amaçlar.

Yeni Hata Tiplemeleri

PHP 7.4, hata yönetimi konusunda da bazı değişiklikler yapmıştır. `TypeError` ve `ValueError` gibi yeni hata türleri eklenmiş, bu hata türleri sınıf ve arayüzler ile daha şeffaf bir şekilde çalışmaktadır. Hataların daha spesifik bir şekilde tanımlanması, hata ayıklama süreçlerini kolaylaştırır.

Sonuç olarak, PHP 7.4, sınıflar ve arayüzler açısından bir dizi yenilik ve iyileştirme sunmuştur. Özelliklerin daha belirgin bir şekilde tanımlanması, veri tutarlılığı, performans iyileştirmeleri ve hata yönetimindeki geliştirmeler, bu sürümle birlikte önemli kazanımlar sağlamıştır. Geliştiriciler için daha okunabilir, güvenli ve performanslı bir yazılım geliştirme ortamı sunulmuş olmaktadır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR