Apa perbedaan antara php7 dan php8?

Ini adalah pembaruan fitur baru yang paling penting di PHP 8, JIT tidak diaktifkan secara default. Namun JIT tidak membuat banyak perbedaan pada aplikasi web

Contoh tentang kinerja JIT yang ditunjukkan

Sumber Referensi. PHP 8 - Fitur Baru, Peningkatan, dan Potensi Masalah dengan WordPress

2. PHP 8 Fitur baru

===
Terimakasih untuk

Apa yang baru di PHP 8

Sesha ・ 15 Nov '20 ・ 9 mnt baca

#php8 #php #laravel #web

RFC operator nullsafe

Alih-alih menulis klasik. == null Anda dapat menggunakan "?"

Sebelum

$country = null; if ($session !== null) { $user = $session->user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } }

Masuk ke mode layar penuh Keluar dari mode layar penuh

Setelah

$country = $session?->user?->getAddress()?->country; _

Masuk ke mode layar penuh Keluar dari mode layar penuh

Promosi properti konstruktor

Alih-alih menentukan properti kelas dan konstruktor untuknya, PHP sekarang dapat menggabungkannya menjadi satu

// In php 7.x class Point { protected float $x; protected float $y; protected float $z; public function __construct( float $x = 0.0, float $y = 0.0, float $z = 0.0, ) { $this->x = $x; $this->y = $y; $this->z = $z; } } // In PHP 8 class Point { public function __construct( protected float $x = 0.0, protected float $y = 0.0, protected float $z = 0.0, ) {} }

Masuk ke mode layar penuh Keluar dari mode layar penuh

Jenis Serikat 2. 0

PHP adalah struktur yang diketik secara dinamis, Jadi tipe gabungan sangat berguna di banyak tempat. Jenis serikat adalah kumpulan dari dua atau lebih jenis yang menunjukkan bahwa salah satu dari itu dapat digunakan

// In PHP 7.4 class Number { private $number; public function setNumber($number) { $this->number = $number; } } // In PHP 8 class Number { private int|float $number; public function setNumber(int|float $number): void { $this->number = $number; } }

Masuk ke mode layar penuh Keluar dari mode layar penuh

RFC Tipe Campuran

Tautan referensi

Tipe campuran adalah tambahan yang bagus untuk sistem tipe php8. Ini setara dengan salah satu dari jenis ini

array|bool|callable|int|float|null|object|resource|string _

Masuk ke mode layar penuh Keluar dari mode layar penuh

Berikut adalah contoh dari dokumentasi RFC tentang bagaimana ini digunakan

public function foo(mixed $value) {}

Masuk ke mode layar penuh Keluar dari mode layar penuh

Perhatikan juga bahwa karena mixed sudah menyertakan null, tidak diperbolehkan membuatnya nullable. Berikut ini akan memicu kesalahan

// Fatal error: Mixed types cannot be nullable, null is already part of the mixed type. function bar(): ?mixed {} _

Masuk ke mode layar penuh Keluar dari mode layar penuh

Cocokkan Ekspresi RFC

Apakah ekspresi kecocokan menggantikan sakelar?. Pencocokan dapat mengembalikan nilai, tidak memerlukan pernyataan panjang seperti sakelar. Ini menggunakan perbandingan tipe yang ketat

//The switch statement loosely compares (==) the given value to the case values. This can lead to some very surprising results. switch ('100') { case 100: $price = "Oh no!"; break; case '100': $price = "This is what I expected"; break; } echo $price; ///> Oh no! //The match expression uses strict comparison (===) instead. The comparison is strict regardless of strict_types. echo match ('100') { 100 => "Oh no!", '100' => "This is what I expected", };

Masuk ke mode layar penuh Keluar dari mode layar penuh

Bernama Argumen RFC

Argumen bernama memberi Anda lebih banyak fleksibilitas saat memanggil fungsi. Sebelumnya, Anda harus memanggil fungsi dan meneruskan setiap argumen sesuai urutan fungsi yang ditentukan

class ExampleClass { public function __construct( private string $title, private string|null $description, private string $type ) { } } // In PHP 7.x $my_class = new Log ( 'New Support request', '', 'support', ); // In PHP 8 $my_class = new ExampleClass ( title : 'New Support request', description : 'You received a new support ...', type: 'support', ); // even you can write something like these $my_class = new ExampleClass ( title : 'New Support request', type: 'support', ); _

Masuk ke mode layar penuh Keluar dari mode layar penuh

Atribut

Alih-alih anotasi PHPDoc, kini Anda dapat menggunakan metadata terstruktur dengan sintaks asli PHP

// PHP 7 { /** * @Route("/api/posts/{id}", methods={"GET"}) */ public function get($id) { /* .. */ } } // PHP 8 class PostsController { #[Route("/api/posts/{id}", methods: ["GET"])] public function get($id) { /* .. */ } } _

Masuk ke mode layar penuh Keluar dari mode layar penuh

Fungsi dan Kelas Baru PHP

Kelas, Antarmuka, dan Fungsi Baru

  • Atribut v2 RFC
  • RFC Peta Lemah
  • Lempar Ekspresi RFC
  • Tanda Koma di Daftar Parameter

$country = $session?->user?->getAddress()?->country; _0

Masuk ke mode layar penuh Keluar dari mode layar penuh

  • Warisan dengan metode pribadi RFC
  • Array Dimulai Dengan Indeks Negatif

$country = $session?->user?->getAddress()?->country; _1

Masuk ke mode layar penuh Keluar dari mode layar penuh

  • Menangkap non-menangkap RFC

$country = $session?->user?->getAddress()?->country; _2

Masuk ke mode layar penuh Keluar dari mode layar penuh

  • ...

3. Dampak & kompatibilitas PHP 8 (dengan Wordpress)

===
Tautan Referensi

Kompatibilitas Versi Wordpress

PHP 8 adalah pembaruan utama PHP dan WordPress bertujuan untuk selalu kompatibel dengan versi baru PHP

Hanya sebagian kecil dari plugin yang tersedia, yang lebih populer dan dikembangkan secara profesional, memiliki pengujian otomatis

PHP 7. * versi telah melihat serangkaian penghentian yang jauh lebih besar daripada versi PHP sebelumnya. Dimana PHP5. 6 ke PHP 7 adalah migrasi yang relatif sederhana, dari 7. x hingga 8 bisa sangat menyakitkan, terutama untuk basis kode yang sangat lama, kenyataannya, bagaimanapun, WordPress bukanlah basis kode seperti itu

Laporan pengujian adalah

** Masalah yang dilaporkan sejak awal di WP 5. 6 siklus dev dan diperbaiki sejak berdasarkan pemindaian Kompatibilitas PHP

  • Parameter opsional dideklarasikan sebelum parameter yang diperlukan
  • Metode pribadi terakhir
  • Hapus penggunaan create_function
  • Hanya panggil libxmldisableentity_loader secara kondisional

** Ada sejumlah besar peringatan PHP yang telah diubah menjadi pengecualian kesalahan di PHP 8

** Perubahan tingkat kesalahan tidak terkait dengan RFC
Peringatan berikut telah diubah menjadi kesalahan yang mungkin terkait dengan penghentian di PHP 7. versi x

  • Mencoba menulis ke properti non-objek. Sebelumnya ini secara implisit membuat objek stdClass untuk string null, false, dan kosong
  • Mencoba menambahkan elemen ke array yang sudah menggunakan kunci PHP_INT_MAX
  • Mencoba menggunakan tipe yang tidak valid (larik atau objek) sebagai kunci larik atau offset string
  • Mencoba untuk menulis ke indeks array dari nilai skalar
  • Mencoba membongkar non-array/Traversable

** Peringatan datang dari mana saja

PHP 8 akan mengandung banyak perubahan yang merusak dan sangat berfokus pada pengetikan yang ketat, sistem ekstensibilitas tipe WordPress yang tidak aman juga menjadi sangat rentan terhadap kesalahan, berpotensi menyebabkan plugin menyebabkan kesalahan ketik di plugin lain atau WordPress itu sendiri, banyak peringatan yang akan

4. Tidak digunakan lagi

Selama PHP7. x siklus rilis, setiap versi memperkenalkan penghentian baru, yang sekarang telah diselesaikan sebagai penghapusan fitur di PHP 8. Ini juga berlaku untuk beberapa penghentian yang sudah diterapkan di PHP 5. x, tetapi tidak dihapus di PHP 7. 0 rilis

Haruskah saya menggunakan PHP 7 atau 8?

Selain itu, versi PHP yang lebih baru berkinerja lebih baik daripada versi yang lebih lama. Peningkatan kinerja dan keamanan yang signifikan mungkin merupakan satu-satunya hal yang diperlukan untuk meningkatkan dan mengamankan pengalaman pengguna yang positif di situs web Anda. PHP 8 jauh lebih cepat daripada PHP 7 menurut berbagai tolok ukur web.

Kapan saya harus meningkatkan ke PHP 8?

Semua versi PHP sebelum 7. 3 telah mencapai akhir masa pakainya, dan disarankan untuk memutakhirkan ke versi terbaru jika Anda menggunakan salah satu versi yang lebih lama , karena akan membuat . Bahkan 7. 4 akan mencapai akhir hidup pada 28 Nov 2022.

Apa yang berubah di PHP 8?

PHP 8. 0 adalah pembaruan utama dari bahasa PHP. Ini berisi banyak fitur dan pengoptimalan baru termasuk argumen bernama, tipe gabungan, atribut, promosi properti konstruktor, ekspresi kecocokan, operator nullsafe, JIT, dan peningkatan dalam sistem tipe, penanganan kesalahan, dan konsistensi

Apa perbedaan antara versi PHP?

Perbedaan Antara PHP5 dan 7

Postingan terbaru

LIHAT SEMUA