Linux

PHP 7.4’e Giriş: Performans, Özellikler, Neden PHP7.4 Kullanmalıyız?

sunucu linux kernel
Share

Merhabalar,

28 Kasım 2019’da yayımlanan bu yeni sürüm artık tüm TALIDO sunucularında kullanılabilmektedir. PHP 7.4 ile Geliştiriciler için, kod okunabilirliği, bakımı ve kullanım kolaylığında iyileştirmeler gelmektedir.. Bazı yeni özelliklere, performans ayarlarına ve PHP 7.4’e geçiş yapmanızın diğer nedenlerine bakalım.

PHP 7.4 Sizin İçin Ne Anlama Geliyor?

PHP, yeni özelliklerle dolu en yeni PHP 7.4 güncellemesini yayınlayarak gelişmeye devam ediyor. Önceki PHP 7 sürümlerinde gördüğümüz gibi – performans ve hız gelişmeye devam ediyor. En heyecan verici yeni özelliklerden biri önyükleme . Yaygın kod satırlarının sadeleştirilmesi sayesinde komut dosyasının yürütülmesini hızlandırmaya yardımcı olur ve daha hızlı ve daha temiz kodlara sahip olma özelliğini sunar.

PHP’den sorumlu iyi insanlar dinleyicilerin görüş ve taleplerini duymuş ve bunları tam olarak cevaplamışlardır. O zamandan beri, kodları daha sezgisel ve programlama dilleri arasında geçiş yapmak daha kolay olacak şekilde sürekli değiştiriyorlar.

PHP, tüm web sitelerinin% 78,9’undan fazlasında kullanılmaktadır. W3techs‘e göre , PHP kullanan en popüler siteler birkaçını belirtmek için Wikipedia, Pinterest ve Facebook’tur.

Özellikle PHP çalıştıran ve PHP 5 ve 7’yi karşılaştıran WordPress sitelerine bakarsak, php işlem sürecinde hızlı bir artış görebiliriz. WordPress destekli web siteleri kesinlikle en son PHP sürümünü kullanarak en fazla kazancı elde eder. TALIDO kullanıcıları tek bir tıklamayla WordPress sitelerini PHP7.4’e yükseltebilirler.

Bu istatistiği görüyor musunuz? Bu grafik aktif olarak PHP kullanan web siteleri hakkında bazı gerçekleri göstermektedir.
39191714 canlı ve aktif web sitesindeki bu grafik dikkatinizi çekmek için yeterli olduğunu düşünmekteyiz.
Şu anda kaç tanesi PHP kullanıyor? Ayrıca PHP 7.4, geliştirilmiş performans ve diğer yaşam kalitesi iyileştirmeleriyle PHP 7.3’ten daha iyi testler yapıyor.
Aşağıdaki grafik , PHP’nin yeni ve eski sürümlerindeki genel karşılaştırma testini göstermektedir .
Test edilen kriterlerden bazıları, diğerlerinin yanı sıra kullanım kolaylığı, hız ve performanstı.

PHP 7.4’teki Yenilikler Nelerdir?

2016’dan beri PHP7 yıllık güncellemeleri hatasız olarak yayınlamaktadır. Her yıl yeni özellikler, eklemeler ve dili web sitelerinde çalıştıranlar için daha güvenilir ve kullanıcı dostu hale getiren daha temiz kod yazma olanağı sunuyorlar.

PHP 7.4 eklenmesi ile yapılan bazı değişikliklere daha yakından bakalım. Tam liste için değişiklik kayıtlarına buradan göz atın .

Önceden yükleme

Kod hakkında konuşalım. Bir çerçeve veya kitaplıklar kullanılırken, dosyaları her istek üzerine yüklenmeli ve bağlanmalıdır. Ön yükleme, çerçeveleri ve kitaplıkları OPCache’ye yükleyebileceğiniz zamandır. Sunucunun PHP dosyalarını yüklemesine ve başlatma sırasında bunları belleğe kaydetmesine ve gelecekteki istekler için kullanılabilir olmasına izin verir. İşlerin çabuk olmasını sağlayın!

Önyükleme belirli bir php.ini yönergesi tarafından çalıştırılır : opache.preload.Bu , PHP komut dosyası derleyicisine sahiptir ve sunucu başlatıldığında yürütülür . Daha fazla dosyayı önceden yüklemek ve bunları dahil etmeyi veya derlemeyi seçebilir.

Ancak, bu önceden yüklenmiş dosyaların kaynağı değiştirilirse sunucunun yeniden başlatılması gerekir. Önceden yüklenmiş dosyalar da OPCache belleğinde sonsuza kadar önbellekte kalır.

Ancak, önceden yüklenmiş bu dosyalar, tekrar kullanmanız gerektiğinde gelecekteki tüm istekler için kullanılabilir olmaya devam edecektir.

Dizi İfadelerinde Forma Operatörü

PHP 5.6 piyasaya sürüldüğünde, PHP argüman paketini açma (yayılma operatörü) özelliğini desteklemeye başladı, ancak şimdi 7.4 ile bu özelliği bir dizi ifadesiyle kullanabiliyoruz. Bağımsız değişken açma, dizileri ve Gezinebilirleri bağımsız değişken listelerine açmak için kullanılan bir sözdizimidir. Ve bunu yapabilmek için sadece… (3 nokta).

Bu örneğe bakalım:

$animals = ['dog', 'cat'];
$animalkingdom = ['lion', 'elephant', ...$animals, 'giraffe'];
// [‘lion’, ‘elephant’, ‘dog’, ‘cat’, ‘giraffe’];

Şimdi bir diziyi başka bir dizide istediğimiz her yerden, sadece Spread Operator sözdizimini kullanarak genişletebiliriz.

Daha uzun bir örnek:

$num1 = [1, 2, 3];
$num2 = [...$num1]; // [1, 2, 3]
$num3 = [0, ...$num1]; // [0, 1, 2, 3]
$num4 = array(...$num1, ...$num2, 111); // [1, 2, 3, 1, 2, 3, 111]
$num5 = [...$num1, ...$num1]; // [1, 2, 3, 1, 2, 3]

Sadece bu değil, aynı zamanda bir işlevde de kullanabilirsiniz. Bu örneği inceleyin:

function getNum() {
  return ['a', 'b'];
}
$num6 = [...getNum(), 'c']; // ['a', 'b', 'c']
 
$num7 = [...new NumIterator(['a', 'b', 'c'])]; // ['a', 'b', 'c']
 
function arrGen() {
    for($i = 11; $i < 15; $i++) {
        yield $i;
    }
}
$num8 = [...arrGen()]; // [11, 12, 13, 14]

Ayrıca, artık bir işlev tarafından doğrudan yeni bir diziye döndürülen dizileri ve jeneratörleri açabilirsiniz.

 

Bir kod örneği şöyle görünecektir:

function getAnimals(){
	return ['dog', 'cat', 'elephant'];
}
$num1 = [...getAnimals(), 'lion', 'tiger', 'giraffe'];

PHP 7.4 Ekran Çıktısı

array(6) {
	[0]=>
	string(3) "dog"
	[1]=>
	string(3) "cat"
	[2]=>
	string(8) "elephant"
	[3]=>
	string(4) "lion"
	[4]=>
	string(5) "tiger"
	[5]=>
	string(7) "giraffe"
}

Bu yeni dizi ifadesiyle, forma işleçleri 7.3 array_merge üzerinde çok daha iyi performans göstermelidir . Bunun nedeni, dizi operatörü bir işlevken yayma işlecinin bir dil yapısı olmasıdır. Ayrıca forma operatörü, gezilebilir ve array_merge uygulayan nesneleri desteklediğinden yalnızca dizileri destekler.

Dikkat edilmesi gereken bazı önemli noktalar, dize anahtarları desteklenmediği için yalnızca dizine alınmış dizileri kullanabilirsiniz. Kullanılırsa, bir dize anahtarı bulunduğunda ekranda kurtarılabilir bir hata atılır.

7.4’ün bir başka muhteşem yararı da array_merge öğesinin kaldırılmasıdır. Korkunç endeks değişimine veda edin!

 

Örneğin, aşağıdaki bu uzun sargılı dizi birleştirmesine bakalım:

$array = [‘banana, ‘orange’];
$array[2] = ‘orange’;
$array[1] = ‘apple’; //shifting
var_dump($array); 
// prints 
array(3) {
	[0]=>
	string(6) "banana"
	[1]=>
	string(5) "apple"
	[2]=>
	string(6) "orange"

7.4’ün diğer bir yararı da jeneratör fonksiyonunu kullanmaktır. Bir jeneratör işlevi , normal bir işlev gibi çalışır, bir değer döndürmek yerine, bir jeneratör işlevi gerektiği kadar değer verir.

Aşağıdaki örnek kodu inceleyin:

function generator() {
	for ($i = 3; $i <= 5; $i++) {
		yield $i;
	}
}
$num1 = [0, 1, 2, ...generator()];

Zayıf Referanslar

Şimdi PHP 7.4, WeakRed sınıfı veya Weakref uzantısıyla karıştırılmaması gereken bir WeakReference sınıfına sahiptir .

 

WeakReferences , programcının bir nesneye başvuru göndermesini sağlar. Bu yararlıdır çünkü nesnenin yok edilmesini engellemez. Önbellek benzeri yapıların uygulanmasında yardımcı olurlar.

WeakReference {
/* Methods */
public __construct ( void )
public static create ( object $referent ) : WeakReference
public get ( void ) : ?object
}

Kontravaryant Parametreler ve Kovaryant Dönüşler

Şu anda PHP çoğunlukla değişmez parametre türlerini ve dönüş türlerini kullanmaktadır. Yani, bir yöntemin X parametresi veya dönüş türü varsa, alt tür parametresi veya dönüş türü de X türü olmalıdır .

Şimdi, PHP 7.4 ile parametre ve dönüş türlerinde kovaryant (spesifikten jenerike sıralı) ve kontravaryant (sırayı tersine çevirmeye ) izin vermeyi önerir .

İşte her ikisine de bir örnek:

 

Kovaryant dönüş tipi örneği:

interface Factory {
	function make(): object;
}
class UserFactory implements Factory {
	function make(): User;
}

Kontravaryant parametre tipi örneği:

interface Concatable {
	function concat(Iterator $input); 
}
class Collection implements Concatable {
	// accepts all iterables, not just Iterator
	function concat(iterable $input) {/* . . . */}
}

amortismanlar

7.4 ile birleşmeyle ilgili birçok itiraz var. Aşağıdaki liste, kullanımdan kaldırmayı hedefleyen işlevlere kısa bir genel bakış niteliğindedir. Burada daha ayrıntılı bir açıklama bulabilirsiniz :

  • gerçek tip
  • Sihirli miras alıntıları
  • array_key_exists () nesnelerle
  • FILTER_SANITIZE_MAGIC_QUOTES filtre
  • Yansıma dışa aktarma () yöntemleri
  • 3. bağımsız değişken olarak kodlama ile mb_strrpos ()
  • implode () parametre sipariş karışımı
  • Unbinding $ bu statik olmayan kapaklardan
  • hebrevc () işlevi
  • convert_cyr_string () işlevi
  • money_format () işlevi
  • ezmlm_hash () işlevi
  • restore_include_path () işlevi
  • allow_url_include ini directiv

Dikkat edilmesi gereken bazı önemli noktalar aşağıdaki iki aşamalı kullanımdan kaldırmalardır.

Birleştirme Operatörünün Önceliğini Değiştirme

Şu anda ‘.’, ‘+’ Ve ‘-‘ operatörlerinin önceliği eşittir. Bu operatörlerin herhangi bir kombinasyonu basitçe soldan sağa çözülecektir.

 

Şimdi PHP 7.3’teki bu koda bakalım:

echo "sum: " . $a + $b; 
// would be evaluated left-to-right
echo ("sum: " . $a) + $b;
// could also look like this

PHP 7.4 ile, ‘+’ ve ‘-‘ ‘.’ dolayısıyla toplama ve çıkarma işlemleri daima dizeden önce yapılır. Bu şu şekilde görünecektir:

echo "sum: " . $a + $b; 
// would be executed as if the code were as follows.
echo "sum :" . ($a + $b);

Bu iki aşamalı teklif, daha az hataya eğilimli ve daha içgüdüsel olmayı amaçlamaktadır. PHP 7.4 şu anda ilk aşamada parantezsiz ‘+’, ‘-‘ ve ‘ifadelerinin kullanımdan kaldırıldığına dair bildirimde bulunuyor. PHP 8’de nihai oy / değişiklik beklenirken.

Sol İlişkisel Üçlü Operatör

Diğer birçok dilden farklı olarak, PHP’deki üçlü operatör sağ ilişkilendiriciden ziyade sol ilişkiseldir. Sadece nadir olmakla kalmayıp, farklı diller arasında geçiş yapan programcılar için de kafa karıştırıcıdır. PHP 7.4 sol çağrışımlığı kaldırmayı önerir ve bunun yerine parantez kullanılmasını gerektirir.

Aşağıdaki koda bir göz atalım:

return $a == 1 ? 'one'
     : $a == 2 ? 'two'
     : $a == 3 ? 'three'
     : $a == 4 ? 'four'
               : 'other';

Diğer birçok dilde şu şekilde yorumlanır:

return $a == 1 ? 'one'
     : ($a == 2 ? 'two'
     : ($a == 3 ? 'three'
     : ($a == 4 ? 'four'
               : 'other')))

PHP’deyken bunun yerine şöyle yorumlanır:

return ((($a == 1 ? 'one'
     : $a == 2) ? 'two'
     : $a == 3) ? 'three'
     : $a == 4) ? 'four'
               : 'other';

Bu, hatalara yol açabilir, çünkü genellikle amaçlanan bu değildir.

PHP 7.4 ayrı bir iki adımlı teklif yoluyla, kullanımdan kaldırma uyarısı olarak parantezin açık kullanımını uyguladı ve umarım gelecekteki sürümlerde derleme çalışma zamanı hatası gerçekleştirir.

Sonuç

Tatillerde tam zamanında, PHP 7.4 tüm PHP geliştiricileri için yeni özellikler ve yaşam kalitesi iyileştirmeleri getiriyor.

WordPress web siteleri kesinlikle bu geliştirmelerden faydalanacak ve kullanıcıları PHP 7.4 kullanırken önceki sürümlerle karşılaştırıldığında daha hızlı yürütme süreleri ve daha az bellek kullanımı bekleyebilirler.

 

Birinci sınıf özellik tipi bildirimleri ve tür ipucu, ok birleştirme işlevleri ve gülünç derecede daha iyi hızın eklenmesiyle, 7.4 iş akışınızın hızını ve kalitesini kesinlikle artıracaktır.