Penggunaan fungsi EXPECT di PHP

SEO Content Writer di Niagahoster. Dia mengembangkan keterampilan menulisnya setelah bertahun-tahun pengalaman dalam jurnalisme

Beranda » Pengembangan & Desain Web » Pemrograman Dasar » PHP 8. Apa kelebihan dan fitur barunya?

PHP 8. Apa kelebihan dan fitur barunya?

11 Maret 2021 7 mnt dibaca

PHP 8 dirilis pada 26 November 2020. Dibandingkan pendahulunya, versi terbaru bahasa pemrograman ini lebih lengkap, baik dari segi fitur, performa, maupun error correction.  

Apa itu PHP8? . Mari baca artikel ini sampai akhir

Daftar Isi

Apa itu PHP8?

PHP 8 adalah pembaruan dari PHP 7. 4 yang akan menghentikan dukungan aktif pada November 2021. Berbeda dengan PHP7. 4 yang hanya merupakan update minor, PHP 8 merupakan update mayor dari bahasa pemrograman PHP.  

Apa yang dimaksud dengan pembaruan besar? . Beberapa fitur andalannya adalah Just In Time Compiler, Weak Maps, dan Named Arguments

Penasaran ingin tahu fitur lengkap dan berbagai kelebihannya?

Baca juga. Cara Membuat Website dengan PHP

10+ Fitur dan Keuntungan PHP 8

Berikut ini adalah fitur-fitur baru di PHP 8 yang tentunya akan memudahkan pekerjaan Anda.  

1. Kompiler JIT (Just In Time).

JIT Compiler adalah teknik untuk meningkatkan kinerja program yang ditafsirkan. Karena sebelum program dijalankan, JIT Compiler sudah mengkompilasi program menjadi kode bahasa mesin.  

Dengan teknik JIT Compiler, eksekusi kode jauh lebih cepat daripada versi interpreter PHP sebelumnya. Bagaimana proses interpretasinya?

Pada compiler PHP sebelumnya, interpreter akan melakukan proses parsing, kompilasi dan eksekusi kode. Proses tersebut berulang setiap kali ada permintaan script. Itu menyebabkan pemborosan ruang CPU

Namun JIT Compiler PHP 8 memiliki kode mesin aktual yang dapat bekerja dengan OPCache. Jadi, ketika ada request script dan cache sudah tersedia di OPCache, maka script akan langsung diteruskan ke CPU untuk dikompilasi.  

Selain itu, JIT Compiler PHP 8 memiliki dua mesin kompilasi JIT yaitu function dan tracing. JIT berbasis fungsi akan mengoptimalkan kode hanya dalam satu fungsi cakupan. Sementara itu, JIT berbasis pelacakan mengoptimalkan seluruh pelacakan dan pencarian kode.  

Saat fitur JIT Compiler diaktifkan, fitur tersebut dapat meningkatkan performa aplikasi berbasis PHP sebesar 3-5%. Sedangkan kinerja aplikasi PHP standar akan meningkat 3 kali lebih cepat

2. Peta Lemah

Peta Lemah adalah struktur data yang dapat mengakomodasi objek. Berbeda dengan Referensi Lemah di PHP 7. 4, Peta Lemah juga dapat menghapus cache dari objek yang tidak lagi dirujuk.  

Di PHP, ketika variabel dari suatu objek dihapus, akan ada pemeriksaan referensi ke objek tersebut. Jika tidak ada variabel lain, berarti aman untuk menghapus objek tersebut

Nah, dengan adanya fitur Weak Maps di PHP 8, proses penghapusan menjadi lebih otomatis. Berikut adalah contoh penggunaannya

<?php class ReviewList { private WeakMap $cache; public function __construct() { $this->cache = new WeakMap(); } public function getReviews(Product $prod): string { return $this->cache[$prod] ??= $this->findReviews($prod->id()); } protected function findReviews(int $prodId): array { // ... } } $reviewList = new ReviewList(); $prod1 = getProduct(1); $prod2 = getProduct(2); $reviews_p1 = $reviewList->getReviews($prod1); $reviews_p2 = $reviewList->getReviews($prod2); // ... $reviews_p1_again = $reviewList->getReviews($prod1); unset($prod1);

Dalam contoh di atas, ketika referensi ke Produk1 tidak ada, referensi di class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError 1 Peta Lemah segera dihapus termasuk yang ada di objek Tinjauan. Dengan cara ini penggunaan memori menjadi lebih efisien karena proses caching dilakukan tanpa penambahan logika lain seperti destruktor dan lain-lain.  

3. Tipe Serikat

Jenis serikat adalah nilai yang memiliki representasi yang sama dalam suatu posisi dan dapat menerima beberapa jenis variabel. Nah, karena PHP mendukung Union Type, kamu bisa mendeklarasikan variabel dalam beberapa tipe

  • Ketik atau null, menggunakan sintaks khusus class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError 2
  • array atau Traversable, menggunakan tipe khusus dari iterable

Di versi PHP sebelumnya, tipe gabungan arbitrer tidak didukung oleh bahasa. Jadi programmer cenderung menggunakan anotasi PHPDoc sebagai solusi.  

Untungnya, tipe gabungan sekarang hadir secara native di PHP 8. Jadi, Anda tidak perlu lagi menggunakan anotasi PHPDoc. Anda dapat mengatur beberapa jenis parameter dengan sintaks T1. T2. .. di semua posisi

Ada beberapa keuntungan dari tipe serikat pekerja. Pertama, karena jenis nilai parameter dapat diatur sendiri, Anda dapat menghindari kemungkinan kesalahan dengan lebih baik. Kedua, jenis informasi yang kurang update juga bisa dihindari

Berikut adalah contoh perbandingan penggunaan tipe union di PHP

PHP 7

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok

PHP 8

class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError _

Seperti pada contoh di atas, PHP 7 masih menggunakan anotasi PHPDoc sebagai berikut

/** * @param float|int $number */ public function __construct($number) { $this->number = $number; }

Sedangkan pada PHP 8 format sintaks lebih sederhana

public function __construct( private int|float $number ) {} _

Dengan fitur Union Type, penulisan sintaks menjadi lebih sederhana dan membuat deklarasi tipe lebih mudah dibaca.  

Baca Juga. Editor PHP Terbaik. Yang Mana Pilihan Anda untuk Tahun 2021?

4. Penggunaan. Kelas Untuk Objek

Di versi sebelumnya, Anda harus menggunakan get_class() untuk menyetel kelas ke objek. Tetapi pada PHP 8, Anda dapat menggunakan. kelas ke objek untuk memastikan kode sumber lebih ramping.  

Untuk kejelasan, perhatikan contoh di bawah ini

$object = new stdClass; var_dump($object::class); // "stdClass" $object = null; var_dump($object::class); // TypeError

5. Operator NullSafe

Sebelumnya, untuk mengecek nilai null pada PHP 7, Anda harus memasukkan kode is_null pada beberapa baris kode berulang kali. Di bawah ini adalah contohnya

PHP 7

<?php $user = get_user($id); if (!is_null($user)) { $address = $user->getAddress(); if (!is_null($address)) { $state = $address->state; If (!is_null($state)) { // And so on. } } } } _

Nah, dengan PHP 8 kamu bisa menggunakan fitur NullSafe Operator. Fitur ini memungkinkan Anda memanggil metode operator ?-> untuk memeriksa nilai null

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

Artinya, dengan menggunakan fitur ini, Anda dapat mendeteksi null dalam elemen rantai. Jika null ditemukan dalam rantai, maka proses eksekusi akan segera dibatalkan. Misalnya seperti ini

<?php $bestSaleItem=$catalog?->getProducts(get_seasonal_type())?->mostPopular(10)[5];

Jika $catalog  null, get_seasonable_type() tidak akan dipanggil. Seluruh rantai akan berhenti saat mendeteksinya dan segera menyetel $bestSaleItem ke nol.  

6. Promosi Properti Konstruktor

Fitur baru selanjutnya dari PHP 8 adalah Constructor Property Promotion. Fitur ini berfungsi untuk mengurangi penulisan atribut yang berulang pada class constructor. Di bawah ini adalah contohnya

class Point { public function __construct( public float $x = 0.0, public float $y = 0.0, public float $z = 0.0, ) {} }

Hal-hal berbeda di PHP 7 di mana semua properti harus diulang beberapa kali sebelum Anda dapat menggunakannya dengan objek. Misalnya seperti ini.  

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 0

Nah, dengan adanya fitur Constructor Property Promotion di PHP 8, penulisan atribut menjadi lebih singkat, lebih mudah dibaca dan tidak terlalu rawan error.  

Namun, fungsi ini hanya dapat digunakan pada parameter yang dipromosikan seperti parameter yang dimulai dengan publik, dilindungi, dan pribadi

7. Argumen bernama

Di PHP versi 7. 4, Anda perlu memperhatikan urutan pemberian argumen untuk mengirim argumen ke suatu fungsi. Tapi di PHP 8, Anda bisa mengirim argumen ke fungsi menggunakan nama pengidentifikasi.  

Misalnya, jika Anda ingin menetapkan nilai argumen ke-7 (http_only) di PHP 7. Anda perlu mengirimkan nilai dari argumen sebelumnya. Ini karena argumen dibaca berdasarkan urutan. Jadi, Anda harus mengirim argumen ke-1 hingga ke-6

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 1

Tapi ini tidak berlaku untuk argumen bernama PHP 8. Argumen yang dikirim memiliki nama sehingga urutan argumen tidak berpengaruh. Artinya, Anda hanya perlu menuliskan nilai yang ingin Anda ubah.  

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 2

Dengan Name Arguments di PHP 8, proses coding menjadi lebih mudah. Karena pengidentifikasi saat argumen diteruskan ke fungsi akan memperjelas pembacaan kode. Selain itu, kode dapat didokumentasikan secara mandiri.  

8. Cocokkan Ekspresi

PHP 8 memperkenalkan fitur Match Expression. Fitur ini mirip dengan Switch on PHP 7. Perbedaannya adalah Match Expression memiliki sintaks yang lebih sederhana dan lebih aman.  

Selain perbedaan utama, perbedaan lain antara Match dan Switch adalah sebagai berikut

  • Ekspresi yang cocok dapat mengembalikan nilai
  • Ekspresi kecocokan hanya mendukung satu ekspresi dan tidak memerlukan pernyataan break;
  • Ekspresi pencocokan melakukan perbandingan yang sangat ketat

Contoh perbedaan Switch dan Match dalam penggunaannya adalah sebagai berikut

PHP 7

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _3

PHP 8

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _4

Contoh penggunaan Switch pada PHP 7 di atas menunjukkan output yang mengacu pada nilai, meskipun bukan tipe datanya, yaitu "Oh tidak. ”

Sedangkan pada Match PHP 8, ketika Anda memasukkan tipe data yang sama, maka akan muncul output yaitu “Ini yang saya harapkan”. Saat Anda memasukkan tipe data yang berbeda, pesan kesalahan akan muncul

9. Atribut

Atribut adalah cara untuk mendeskripsikan informasi dan konfigurasi tambahan, sehingga dapat dibaca oleh mesin pada deklarasi di dalam kode

Di versi sebelumnya, Anda mendokumentasikan parameter dan nilai menggunakan PHPDoc. Nah, fitur Attributes pada PHP 8 memudahkan Anda untuk menggunakan structured metadata dengan sintaks native PHP.  

Berikut perbandingannya

PHP 7

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 5

PHP 8

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 6

10. String Numerik

Pada versi sebelumnya, membandingkan string dengan angka dilakukan dengan mengubah string menjadi angka. Kemudian lakukan perbandingan antara integer atau float. Metode ini rentan terhadap bug atau masalah keamanan.  

Numeric Strings membuat PHP 8 lebih baik dari versi sebelumnya. Karena string numerik mengubah string menjadi angka sebelum melakukan perbandingan. Tujuannya adalah untuk menghindari kesalahan perbandingan.  

Alhasil, cara ini bisa memperbaiki bug atau masalah keamanan di versi sebelumnya

Baca Juga. 7 Tips Keamanan PHP yang Harus Anda Baca

Berikut adalah contoh perbandingan antara PHP 7 dan PHP 8 yang menunjukkan hasil perbandingan sederhana

PHP 7

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _7

PHP 8

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok 8

Contoh PHP 7 menunjukkan bahwa bilangan bulat 0 (nol) sama dengan '0'. Ini berarti tipenya adalah tipe string dengan output yang sebenarnya. Sedangkan pada PHP 8 kondisi yang sama akan menghasilkan keluaran yang salah karena adanya tipe data yang berbeda

11. Kesalahan tipe yang konsisten untuk fungsi internal

Saat Anda membuat kesalahan pengiriman jenis, yang ditentukan pengguna dan fungsi internal akan mengirim pesan yang berbeda. Fungsi yang ditentukan pengguna mengirimkan pesan TypeError. Sementara fungsi internal mengirim berbagai pesan berbeda.  

Ini mungkin menyulitkan Anda untuk mengidentifikasi lokasi dan penyebab kesalahan atau kesalahan. Nah, PHP 8 menghadirkan solusinya dengan fitur kesalahan tipe yang konsisten untuk fungsi internal

Fitur ini akan menampilkan pesan kesalahan dan menempatkan kesalahan ketika terjadi kesalahan pengkodean. Kesalahan ditunjukkan dengan TypeError. … atau ValueError. …

Dengan fitur ini, Anda bisa mengetahui letak kesalahannya. Selain itu, Anda juga akan mengetahui cara memperbaiki pernyataan kesalahan tersebut

Berikut adalah contoh penggunaan fitur ini

PHP 7

class Number { /** @var int|float */ private $number; /** * @param float|int $number */ public function __construct($number) { $this->number = $number; } } new Number('NaN'); // Ok _9

PHP 8

class Number { public function __construct( private int|float $number ) {} } new Number('NaN'); // TypeError _0

Seperti yang terlihat pada contoh di atas, pesan kesalahan yang muncul di PHP 8 diperbaiki agar lebih konsisten untuk semua jenis parameter yang tidak valid

Niagahoster sudah mendukung PHP 8

Setelah mempelajari fitur-fitur di atas, Anda pasti akan mengetahui keunggulan PHP 8 dibanding pendahulunya. Bagaimana?

Jangan khawatir, semua server di Niagahoster kini mendukung PHP 8. Hal ini tentunya akan membuat website Anda up-to-date, aman dan memiliki performa yang baik.  

Hanya saja, PHP 8 belum menjadi default setting server di Niagahoster. Alasannya adalah versi baru mungkin tidak diperlukan di beberapa situs web terkait kompatibilitas.  

Namun, jika Anda tertarik untuk menggunakan PHP 8, Anda dapat langsung mengubah versi PHP melalui cPanel. Jangan lupa untuk melakukan langkah backup untuk menghindari kehilangan data

Bagaimana cara mengubahnya?

Masuk ke cPanel hosting Anda. Selanjutnya, scroll ke bawah ke bagian Software dan pilih menu Select PHP Version.  

Kemudian, klik drop down yang bertuliskan 7. 4 (saat ini) dan pilih versi 8. 0 di bagian versi PHP saat ini

Pengaturan ini akan disimpan secara otomatis hingga server Anda menggunakan PHP versi 8.  

Baca juga. PHP 8. 1 telah dirilis. Lihat Fitur Baru, Perubahan, Cara Upgrade

Apakah Anda Siap Beralih ke PHP 8?

PHP 8 menawarkan banyak fitur yang akan membuat pekerjaan Anda lebih mudah. Tidak hanya menawarkan penulisan script yang lebih sederhana dan jelas, performa website dengan PHP 8 diharapkan bisa jauh lebih cepat.  

Beberapa fitur utama yang ditawarkan oleh PHP 8 beserta fungsinya adalah sebagai berikut

  1. Just In Time Compiler – meningkatkan kinerja program yang ditafsirkan
  2. Peta Lemah – bersihkan objek yang tidak lagi direferensikan
  3. Union Type – memungkinkan Anda mendeklarasikan variabel dalam beberapa tipe
  4. Class for Object – merampingkan kode sumber
  5. Operator NullSafe – mendeteksi nol dalam elemen rantai
  6. Promosi Properti Konstruktor – mengurangi penulisan atribut berulang
  7. Argumen Bernama – meneruskan argumen ke fungsi menggunakan nama
  8. Cocokkan Ekspresi - memiliki fungsi yang mirip dengan Beralih tetapi dapat mengembalikan nilai
  9. Atribut – menjelaskan informasi dan konfigurasi tambahan, sehingga dapat dibaca oleh mesin pada deklarasi dalam kode
  10. String Numerik - mengubah string menjadi angka sebelum melakukan perbandingan, sehingga perbandingan lebih ketat dan kesalahannya minimal
  11. Jenis Kesalahan yang Konsisten untuk Fungsi Internal - menampilkan pesan kesalahan dan menempatkan kesalahan saat ada kesalahan pengkodean

Nah, jika Anda sudah siap menggunakan PHP 8 untuk website Anda, tunggu apa lagi?

Membagikan

Salsabila Annisa Ikuti SEO Content Writer di Niagahoster. Dia mengembangkan keterampilan menulisnya setelah bertahun-tahun pengalaman dalam jurnalisme.

Berlangganan sekarang

Dapatkan berbagai artikel tutorial, insight dan tips menarik seputar dunia online langsung melalui email Anda. Berlangganan sekarang dan raih kesuksesan bersama kami

Postingan terbaru

LIHAT SEMUA