Yuk Mengenal PHP 7.4: Fitur-Fitur Baru dan Keunggulannya

By | March 11, 2019

PHP 7.4 telah diluncurkan di 28 November kemarin. Diperbandingkan para pendahulunya, versi terbaru dari bahasa pemrograman ini membangun situs Sahabat lebih cepat, aman, dan powerful. Mari kenali seluruh fitur baru dan kelebihannya!

Apa Saja yang Baru di PHP 7.4?

PHP 7.4 memang adalah sebuah pembaharuan kecil bagi versi 7 dari bahasa pemrograman ini. Namun, jangan salah sangka. Varian terbaru ini menawarkan performa yang lebih bagus dan bermacam-macam fitur baru:

  1. Preloading
  2. Spread Operator pada Array Expression
  3. Generator Function
  4. Weak Reference
  5. Contravariant Parameter dan Covariant Return
  6. Null Coalescing Assignment Operator
  7. Typed Properties 2.0
  8. Arrow Functions 2.0

Sekarang ini mari bahas fitur-fitur tersebut secara lebih pada!

1. Preloading

Pemrograman menggunakan framework atau library mengharuskan Sahabat bagi mengunggah dan menghubungkan masing-masing file pada setiap request.

Berkat fitur preloading, Sahabat dapat mengunggah framework dan library ke pada OPCache — yang memungkinkan “penyimpanan” file PHP pada server. File-file tersebut kemudian akan di-compile dan dijalankan secara otomatis bagi setiap request yang membutuhkannya. Mudah dan cepat, bukan?

Bagi menentukan file apa saja yang ingin di-preload dan dijalankan secara otomatis, Sahabat perlu mengulik diantara command pada file php.ini, yakni opcache.preload. Namun, perlu diingat bahwa perubahan file yang telah di-preload mengharuskan Sahabat bagi restart server.

2. Spread Operator pada Array Expression

Argument unpacking atau spread operator, syntax yang digunakan bagi menjabarkan array dan traversable menjadi argument list, telah ada sejak PHP 5.6. Akan tetapi, versi 7.4 memungkinkan Sahabat bagi menggunakannya dengan array expression. Sahabat hanya perlu menambahkan tiga titik di depan spread operator bagi menggunakannya.

Agar lebih jelas, perhatikanlah contoh di bawah ini:

$hewan = ['anjing', 'kucing'];
$kerajaanhewan = ['singa', 'gajah', ...$hewan, 'jerapah'];
// [‘singa’, ‘gajah’, ‘anjing’, ‘kucing’, ‘jerapah’];

Di contoh tersebut, $hewan dapat dijabarkan pada array lain dengan menambahkan tiga titik di depannya. Selain itu, Sahabat pun dapat menggunakan spread operator pada sebuah function, seperti di contoh berikut:

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]

Ditambah lagi, Sahabat dapat seketika  menjabarkan array dan generator yang dikembalikan oleh sebuah function di pada array lainnya. Contohnya seperti di bawah ini:

function getHewan(){
 return ['anjing', 'kucing', 'gajah'];
}
$num1 = [...getHewan(), 'singa', 'harimau', 'jerapah'];

Berikut yakni hasil dari function tersebut kalau di-compile dengan PHP 7.4:

array(6) {
 [0]=>
 string(3) anjing
 [1]=>
 string(3) kucing
 [2]=>
 string(8) gajah
 [3]=>
 string(4) singa
 [4]=>
 string(5) harimau
 [5]=>
 string(7) jerapah
}

Dengan adanya syntax spread operator pada array expression, fitur array_merge milik PHP 7.3 telah tak dibutuhkan lagi.

3.Generator Function

Generator function berfungsi layaknya function lazimnya. Namun, ia dapat menyimpan value sebanyak-banyaknya. Di bawah ini yakni contohnya:

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

4. WeakReference

Class WeakReference memungkinkan Sahabat bagi mempertahankan reference dari sebuah object. Fitur ini bermanfaat pada penerapan struktur yang menyerupai cache. Contohnya seperti berikut ini:

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

5. Contravariant Parameter dan Covariant Return

Dalam rentang waktu ini PHP menggunakan invariant parameter dan return. Artinya, kalau parameter atau return dari sebuah method yakni X, subtype parameter atau return-nya pun mesti X.

Akan tetapi, PHP 7.4 menghadirkan covariant (dari spesifik ke umum) dan contravariant (dari umum ke spesifik) parameter dan return. Berikut yakni contoh pemakaian keduanya.

Covariant return:

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

Contravariant parameter:

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

6. Null Coalescing Assignment Operator

Coalesce operator ?? bermanfaat ketika Sahabat menggunakan ternary operator dengan isset(). Operator ini akan mengembalikan operand pertama-tama. Bila operand pertama-tama bersifat null, operand kedualah yang akan dikembalikan. Agar lebih jelas, perhatikanlah contoh berikut ini:

$username = $_GET['user'] ?? ‘nobody';

Meskipun baris kode tersebut terlihat sederhana, implementasinya akan menjadi rumit ketika Sahabat memasukkan variabel yang panjang, seperti di contoh di bawah ini:

$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';

Kabar baiknya, di PHP 7.4 Sahabat dapat mempersingkat kode di atas dengan null coalescing assignment operator yang direpresentasikan dengan simbol ??=. Dengan operator ini, kode diatas dapat dipersingkat menjadi demikian:

$this->request->data['comments']['user_id'] ??= ‘value’;

7. Typed Properties 2.0

Argument type declaration atau type hint memungkinkan Sahabat bagi tipe variabel yang ingin diteruskan ke sebuah function atau class method. Fitur ini telah ada sejak PHP 5, tetapi ditingkatkan di PHP 7.4 dengan first class property type declaration.

Fitur ini mendukung seluruh tipe variabel, termasuk bool, int, float, string, array, object, iterable, self, parent, dan nullable type. Akan tetapi, void dan callable tak didukung oleh typed properties karena mempunyai semantik yang kurang jelas.

Pemakaian typed properties dapat mempersingkat waktu yang Sahabat butuhkan bagi menulis kode. Perhatikan perbandingan penulisan kode bagi class di contoh di bawah ini.

class User {
   /** @var int $id */
   private $id;
   /** @var string $name */
   private $name;
   public function __construct(int $id, string $name) {
       $this->id = $id;
       $this->name = $name;
   }
   public function getId(): int {
       return $this->id;
   }
   public function setId(int $id): void {
       $this->id = $id;
   }
   public function getName(): string {
       return $this->name;
   }
   public function setName(string $name): void {
       $this->name = $name;
   }
}

Kode di atas ditulis dengan PHP 7.3. Panjang bukan? Sekarang ini bandingkan dengan kode di bawah ini yang ditulis dengan PHP 7.4.

class User {
   public int $id;
   public string $name;
   public function __construct(int $id, string $name) {
       $this->id = $id;
       $this->name = $name;
   }
}

Dengan typed properties, Sahabat pun dapat menentukan property value. Namun, perlu Sahabat ingat bahwa property value mesti sesuai dengan property type. Selain itu, null value hanya dapat dimiliki oleh null property. Bila tak, Sahabat akan menemui fatal error. Coba perhatikan contoh berikut ini:

class User {
public int $id;
public string $name;
}

$user = new User;
$user->id = 10;
$user->name = [];

Di contoh tersebut, property type yang ditentukan yakni string. Padahal, property value-nya yakni array. Karena itu, error seperti di bawah ini akan muncul:

Fatal error: Uncaught TypeError: Typed property User::$name must be string, array used in /app/types.php:9

8. Arrow Functions 2.0

Anonymous function pada PHP umumnya terdiri dari barisan-barisan kode yang panjang, bahkan bagi pengoperasian yang sederhana. Bagi mengatasi masalah tersebut, diciptakanlah arrow function.

Bagi melihat betapa berfungsinya fitur ini, mari perhatikan contoh-contoh berikut. Di bawah ini yakni kode yang ditulis dengan PHP 7.3:

function array_values_from_keys($arr, $keys) {
   return array_map(function ($x) use ($arr) { return $arr[$x]; }, $keys);
}

Dengan PHP 7.4, kodenya akan terlihat seperti demikian:

function array_values_from_keys($arr, $keys) {
   return array_map(fn($x) => $arr[$x], $keys);
}

Dengan arrow function, kodenya dapat lebih dipersingkat lagi:

fn(parameter_list) => expr

Berikut kami tampilkan contoh lain, di mana $fn1 ditulis dengan PHP 7.3 dan $fn2 ditulis dengan PHP 7.4.

$y = 1;
$fn1 = fn($x) => $x + $y;
$fn2 = function ($x) use ($y) 
{
   return $x + $y;
};

Dengan arrow function, kode di atas menjadi:

$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;

Arrow function mendukung bermacam-macam jenis function, termasuk variadics, default values, parameter types dan return types, serta by-reference passing dan returning. Berikut yakni arrow function bagi function-function tersebut:

fn(array $x) => $x;
fn(): int => $x;
fn($x = 42) => $x;
fn($x) => $x;
fn($x) => $x;
fn($x, ...$rest) => $rest;

Di samping itu, arrow function yakni function yang sangat tak diutamakan pada sebuah operasi. Bila Sahabat menuliskan fn($x) => $x + $y, pengoperasian yang didahulukan yakni $x + $y, bukan fn($x) => $x.

Fitur-Fitur Usang di PHP 7.4

Dengan dirilisnya PHP 7.4, banyak fitur dari versi-versi pendahulu yang telah usang. Fitur-fitur tersebut akan ditinggalkan karena telah mempunyai pengganti yang lebih efisien. Berikut yakni beberapa di antaranya:

  • Tipe variabel real
  • array_key_exists() dengan object
  • Filter FILTER_SANITIZE_MAGIC_QUOTES
  • mb_strrpos() dengan encoding selaku argument ketiga
  • implode() parameter order mix
  • Melepaskan $this dari non-static closures
  • Function hebrevc()
  • Function convert_cyr_string()
  • Function money_format()
  • Function ezmlm_hash()
  • Function restore_include_path()

Bila ingin mengetahui seluruh fitur yang akan ditinggalkan di PHP 7.4, Sahabat dapat membacanya di sini.

Selain yang terdapat pada daftar di atas, ada dua fitur urgen yang berubah di PHP 7.4:

  • Hierarki operator pada operasi penggabungan
  • Left-associative ternary operator

Hierarki Operator pada Operasi Penggabungan

Sebelumnya, operator ‘.’, ‘+’, dan ‘-’ mempunyai hierarki yang sama. Oleh karena itu, operasi yang menggunakan ketiga operator tersebut akan dijalankan dari kiri ke kanan.

Namun, ‘+’ dan ‘-’ didahulukan dari ‘.’ di PHP 7.4. Dengan kata lain, operasi penambahan dan pengurangan akan selalu didahulukan.

Pada echo “sum: ” . $a + $b;, misalnya, $a + $b akan dilakukan terlebih dahulu.

Left-Associative Ternary Operator

Berbeda dengan bahasa pemrograman lainnya, ternary operator di PHP bersifat left-associative. Hal ini menimbulkan kebingungan untuk developer yang telah terbiasa dengan ternary operator yang bersifat right-associative.

Kabar baiknya, PHP 7.4 meninggalkan sifat tersebut dan mengharuskan pemakaian tanda kurung bagi memperjelas pengoperasian. Bagi memahami konsep baru ini, mari perhatikan contoh berikut:

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

Pada bahasa pemrograman lain, kode di atas diinterpretasikan selaku berikut:

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

Pada versi PHP terdahulu, interpretasinya seperti demikian:

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

Interpretasi di atas pastinya tak sesuai dengan maksud sesungguhnya dari kode tersebut. Oleh karena seperti itulah PHP akan menggunakan right-associative ternary operator mulai versi 7.4.

Niagahoster Telah Mendukung PHP 7.4

Seluruh server hosting Niagahoster telah mendukung PHP 7.4. Bagi memeriksa apakah Sahabat telah menggunakan versi PHP terbaru, masuklah ke akun cPanel Sahabat.

Berikutnya, klik fitur Select PHP Version yang terdapat pada kolom Sistem aplikasi. Sahabat pun dapat mengetikkan nama fitur tersebut di search bar di bagian atas halaman agar lebih gampang.

Yuk Mengenal PHP 7.4: Fitur-Fitur Baru dan Keunggulannya

Klik fitur drop down di bagian PHP Version. Bila Sahabat belum menggunakan versi PHP terbaru seperti di contoh di bawah ini, klik 7.4.

Yuk Mengenal PHP 7.4: Fitur-Fitur Baru dan Keunggulannya

Perubahan pengaturan ini seketika tersimpan secara otomatis. Setelah mengganti versi PHP ke 7.4, Sahabat dapat menutup halaman cPanel.

Penutup

Demikianlah seluruh fitur baru yang hadir di PHP 7.4. Semoga artikel ini bermanfaat untuk Sahabat. Bila mempunyai pertanyaan, jangan sungkan bagi meninggalkan pertanyaan Sahabat di kolom komentar yang terdapat. Jangan lupa pun subscribe bagi memperoleh informasi seputar Cloud VPS Hosting dan WordPress panduan dari kami.


Sumber https://niagahoster.co.id/