Başlık biraz garip olabilir evet ama bugün PHP 7.4’ü tanıyacağız, bildiğiniz gibi PHP 7.4 için çalışmalar hala devam ediyor ve bu güne kadar 3 alpha, 3 de beta versiyon yayınlandı. 5 Eylül itibariyle RC versiyonlar da yayınlanacak. PHP 7.4 release tarihi için belirtilen gün 28 Kasım 2019. Bu tarihe kadar toplamda 6 adet RC versiyon planlanmış görünüyor. Zamanlamalarla alakalı detaylı bilgiye şuradan da ulaşabilirsiniz.
Şimdi bu maddeleri kısa kısa inceleyelim
Closure ve Anonymous fonksiyonları PHP’de uzun zamandır kullanıyoruz. Bununla alakalı küçük bir örnek yazalım:
array_map(function (User $user) {
return $user->id;
}, $users)
Bu şekilde tek satır olarak kullandığımız, sadece return işlemi yapan fonksiyonları artık Arrow Functions ile şu şekilde kullanabileceğiz:
array_map(fn (User $user) => $user->id, $users)
Arrow Functions ile ilgili bilmemizin faydası olacağını düşündüğüm bir kaç bilgiyi de sizinle paylaşayım:
Bu özellik ile artık sınıflar içerisinde tanımladığımız değişkenlere (class variables) tür tanımlaması yapabileceğiz. Şöyle ki:
class A
{
public string $name;
public ?Foo $foo;
}
Burada bazı özel hususlar mevcut. Örneğin; public olarak tanımlanmış bir sınıf değişkenine, herhangi bir yerden erişmemiz mümkün. Ama eğer bu değişkene bir tür tanımlaması yaptıysak ve bu değişken için bir initialize (değer tanımlaması diyebiliriz) yapmadıysak; değişkene erişmeye çalışırken şuna benzer bir hata alacağız:
PHP 7 ile birlikte yazdığımız fonksiyonlar dönüş tipi belirtebileceğimiz bir özellik geldi. Güzel de oldu. Bu özellik ile belli veri tipleri için dönüş tipleri (return types) belirtebiliyorduk.
PHP 7.4 ile bu olay biraz daha geliştirilmiş ve artık covariant dönüş tipi de kullanabileceğiz. Örneklendirecek olursak:
class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}
Buna ek olarak covariant tiplerin kullanımı sadece dönüş tipleri için değil, fonksiyon parametre tipleri için de kullanılabilecek. Şöyle ki:
class A
{
public function contraVariantArguments(ChildType $type)
{ /* … */ }
}
class B extends A
{
public function contraVariantArguments(ParentType $type)
{ /* … */ }
}
Bu geliştirme ile alakalı RFC bağlantısını buraya bırakıyorum.
Biliyorsunuz PHP 7 ile birlikte hayatımıza null operatörü girmişti. Şu şekilde bir kullanım yapabiliyorduk:
$data['date'] = $data['date'] ?? new DateTime();
Artık bu gibi işlemleri yeni eklenecek Null Assignment Operator ile şu şekilde çok daha kısa yapabileceğiz:
$data[‘date’] ??= new DateTime();
Nasıl? Bence yerinde bir geliştirme olmuş.
Spread operatörünü (…) fonksiyon parametrelerinde kullanabiliyorduk. Artık bu operatör direkt olarak diziler içerisinde de kullanıma uygun hale getirilmiş. Güzel de olmuş. Şöyle bir örnek görelim:
$arrayA = [1, 2, 3];
$arrayB = [4, 5];
$result = [0, ...$arrayA, ...$arrayB, 6 ,7];
// [0, 1, 2, 3, 4, 5, 6, 7]
Burada dikkat etmemiz gereken bir husus var o da; bu işlemi sadece numeric index key’lere sahip diziler ile yapabiliyor olmamız. Bu da aklınızda bulunsun. Belki ilerleyen zamanlarda tüm key’ler için işlem yapabileceğimiz geliştirmeler yapılabilir. Bu yeniliğin RFC bağlantısını da şöyle bırakayım.
PHP 7.4 ile birlikte alt tire (underscore) karakteri ile birlikte uzun numeric ifadeleri daha görsel yazabilmek mümkün olacak. Şöyle bir örnek verelim:
$unformattedNumber = 107925284.88;
$formattedNumber = 107_925_284.88;
Bu geliştirmenin RFC bağlantısını da şöyle bırakıyorum.
Bu özellik ile bazı core-level özellikleri kullanmak istediğimizde kendi kodumuz üzerinden C kodunu çağırma imkanı bulabileceğiz. Özetle; PHP ile bir PHP extension yazabilecek ve bunu kullanabileceğiz. Bunun için yine de C bilgisi gerekecek çünkü bu tarz bir geliştirmenin hala karışık ve zorlu tarafları var. Sonuçta core-level’da işlem yapacağız ve bu beraberinde C bilgisini gerektirecek. Bu özellik için de bir RFC bağlantısı mevcut. İsterseniz detaylı olarak bir inceleme yapabilirsiniz.
Bu konu çok fazla araştırma veya deneme fırsatı bulduğum bir konu değil maalesef, elimden geldiğince temel bilgi vermeye çalışıyorum. Bu nedenle, bu konu hakkında detaylı bilgisi olan veya kaynak paylaşabilecek kişiler bana ulaşabilirse, yazının bu kısmını güncelleyip daha detaylı ve doğru bilgi verebiliriz diye düşünüyorum.
Şimdi bu olayı kısaca ele alalım: PHP ile bir web uygulaması yazdığımızı düşünelim. Bunun için herhangi bir frameworkü kullanıyoruz veya kendimizce bir yapı oluşturmuş ve bunu kullanıyoruz. Server’a gelecek her request için uygulamanızda bulunan gerekli dosyaların sürekli olarak yüklenmesi gerekecek. Bu dosyaları sizin uygulamanızın core dosyaları olarak düşünebilirsiniz. Yani uygulama çalışırken kesinlikle yüklenmesi gereken dosyalar. Çekirdek sınıflar, fonksiyonlar, config dosyaları vs… Tüm bu dosyalar her gelen request için bir daha, bir daha yüklenecek. İşte burada devreye Preloading giriyor!
Yazımı bir sözle bitirmek istiyorum
Before software can be reusable it first has to be usable.
(Yazılımın yeniden kullanılabilmesi için önce kullanılabilir olması gerekir.)
Ralph Johnson
Günümüzde, dünya genelinde su kaynakları giderek azalıyor ve su krizi giderek artan bir endişe kaynağı…
Web kameraları, günümüzde hemen hemen her bilgisayarın ayrılmaz bir parçası haline gelmiştir. Uzaktan çalışma, eğitim…
Günümüzde teknolojinin ilerlemesiyle birlikte evlerimizde bulunan birçok cihaz internete bağlanabilmekte ve bu durum hayatımızı kolaylaştıran…
Günümüzün dijital çağında, hemen hemen her sektörde yazılımın rolü büyük bir önem taşımaktadır. Peki, yazılım…
Günümüzde, çevre sorunları ve sürdürülebilirlik, küresel ölçekte giderek artan bir önem kazanmaktadır. Yeşil teknoloji, bu…
Geleceğin ulaşım teknolojileri, sadece daha hızlı ve daha verimli taşımacılık sağlamakla kalmıyor, aynı zamanda çevre…
This website uses cookies.