Cara menggunakan php 8.1 htmlspecialchars

Versi PHP menjadi sangat penting, untuk menjalankan aplikasi website yang Anda buat. Seringkali website gagal diakses, karena perbedaan versi php di hosting dengan versi php di script. Oleh karena itu dalam panduan ini, kami akan membagikan cara mengubah versi PHP di cPanel

Daftar isi

Di layanan Shared hosting Rumahweb, kami menyediakan php versi 5. 2 sampai 8. 1. Mengubah versi php di cPanel dapat dilakukan melalui dua fitur yaitu MultiPHP Manage atau Select PHP Version

Bagi yang belum mengetahui perbedaan kedua fitur tersebut, bisa membaca terlebih dahulu artikel berikut ini. Menggunakan Select PHP Version dan MultiPHP Manager cPanel

Cara Mengubah versi PHP cPanel

Seperti yang sudah dijelaskan sebelumnya, ada 2 cara untuk mengubah versi PHP di cPanel, yaitu melalui Select PHP version dan Multiphp Manager. Pilih Versi PHP digunakan, ketika Anda ingin melakukan Opsi PHP kustom. Sedangkan jika ingin menggunakan PHP Native, maka bisa menggunakan fitur MultiPHP Manager

Berikut kami jelaskan cara mengubah versi PHP di cPanel Rumahweb

Pilih Versi PHP

Anda bisa memilih opsi ini, jika ingin melakukan custom PHP Option di Hosting. Langkah-langkahnya adalah sebagai berikut

1. Login ke cPanel, lalu pilih menu 'Select PHP version'

2. Pilih versi PHP yang akan digunakan, dengan mengklik pilihan yang tersedia pada bagian “Versi PHP”.

3. Jangan lupa klik set as current untuk menyimpan versi php yang Anda butuhkan

Nonaktifkan Aktifkan Ekstensi PHP

Selain ekstensi bawaan yang sudah terpasang di server, Anda juga bisa mengubah atau menonaktifkan/mengaktifkan ekstensi php sesuai kebutuhan. Untuk menonaktifkan/mengaktifkan extension php, silahkan klik menu Extensions seperti terlihat pada gambar berikut

Setelah itu, akan muncul ekstensi php yang dapat Anda aktifkan atau nonaktifkan sesuai kebutuhan. Silakan centang untuk mengaktifkan, atau hapus centang untuk menonaktifkan ekstensi php di hosting Anda

Kami merekomendasikan untuk mencentang sesuai dengan kebutuhan Anda saja. Jangan centang semua ekstensi, karena ini dapat menyebabkan php di hosting Anda menjadi error

Jika ingin mereset extension PHP, silahkan klik tombol "Reset to default" untuk kembali ke server awal atau default

Ubah Opsi PHP

Bagi anda yang ingin merubah nilai memory_limit, max_execution_time menjadi upload_max_filesize, anda bisa melakukannya melalui menu Options di Select php version

Silahkan klik menu Options, kemudian sesuaikan nilai opsi php yang anda inginkan. Untuk penjelasan mengubah nilai opsi php, kami publikasikan secara terpisah melalui artikel berikut. Cara Mengatur Batas PHP cPanel

Manajer MultiPHP

Anda bisa memilih opsi ini, jika ingin menggunakan versi php yang berbeda di setiap domain. Misalnya dalam 1 hosting, Anda memiliki 2 website dengan persyaratan versi php yang berbeda. Anda dapat menggunakan opsi ini untuk mengatur versi php masing-masing

Namun jika Anda ingin menggunakan opsi ini, pastikan status php di menu SelectPHP Version diatur ke "Native"

Untuk mengubah versi php di MultiPHP Manager, Anda bisa mengikuti panduan berikut ini

  1. Login ke cPanel hosting Anda
  2. Klik menu MultiPHP Manager
  1. Centang nama domain yang ingin diubah, lalu pada kolom Versi PHP silahkan pilih versi php yang dibutuhkan. Pastikan Anda memilih opsi php yang dimulai dengan ea-php

Untuk memastikan versi php aktif di website, Anda bisa membuat file info php. Pelajari cara mengecek versi php melalui artikel berikut. Cara Mengecek Versi PHP yang Digunakan

Itulah cara mengubah versi PHP di cPanel Rumahweb hosting. Jika masih ada kendala, silahkan hubungi bagian teknis kami melalui live chat, telepon, atau email ke technical[at]rumahweb. com. Semoga bermanfaat

PHP 8. 1 adalah versi PHP baru yang dirilis November 2021. Versi ini hadir dengan fitur-fitur baru, peningkatan performa, dan perubahan yang akan membuka lebih banyak peluang bagi pengembang PHP untuk bekerja secara efisien dan lebih kreatif

Ada lebih dari 20 fitur baru, banyak perubahan, dan beberapa penghentian dalam PHP 8. 1. Artikel ini akan membahasnya dan membantu Anda beralih dengan lancar dari PHP 8. 0 hingga PHP8. 1

 

Fitur Baru dan Upgrade di PHP 8. 1

Versi PHP utama baru ini memperkenalkan lebih dari 20 fitur baru. Ingatlah bahwa mungkin ada perubahan setelah tanggal rilis yang dapat membuat daftar ini lebih panjang atau lebih pendek

Berikut adalah beberapa fitur baru di PHP 8. 1

Pencacahan

PHP 8. 1 mendukung pencacahan, atau singkatnya enum. Ini adalah tipe data enumerasi yang terdiri dari sekumpulan nilai yang mungkin tetap

Sintaks menggunakan enum untuk mendeklarasikan pencacahan, diikuti dengan nama yang ditentukan pengguna. Kemudian, diikuti dengan case untuk mendeklarasikan kemungkinan nilai. Pencacahan dapat memiliki sejumlah kasus, dari nol hingga sebanyak yang Anda butuhkan

Pencacahan RFC menggunakan kartu remi standar untuk menjelaskan cara kerjanya. Ada empat setelan tetap – Spades, Hearts, Diamonds, dan Clubs. Anda dapat menghitung pakaian ini dengan enum di PHP

enum Suit { case Spades; case Hearts; case Diamonds; case Clubs; }

Sekarang, enum Suit memiliki empat kemungkinan nilai suit kartu. Anda dapat menggunakan fungsi dan menerapkan tipe saat menerima atau mengembalikan nilai setelan dengan sintaksis, misalnya, function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }8

function pick_card(Suit $suit) {} pick_card(Suit::Spades);

Pencacahan juga dapat berisi string opsional atau nilai int. Ini disebut Enum yang didukung, dan memiliki kriteria berikut

  • Deklarasikan tipe skalar, apakah function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }9 atau function redirect(string $url): never { header('Location: ' . $url); exit(); }0, dalam deklarasi Enum
  • Semua kasus memiliki nilai
  • Semua kasus berisi tipe skalar yang sama, apakah function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }9 atau function redirect(string $url): never { header('Location: ' . $url); exit(); }0
  • Setiap kasus memiliki nilai unik

Misalkan kita ingin memberikan skor pada setelan di contoh sebelumnya. Kita bisa menggunakan sintaks ini

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;

Serat

Fitur baru ini memperkenalkan eksekusi bersamaan dalam pemrograman PHP. Namun, concurrent execution dalam PHP tidak berarti bahwa action dieksekusi pada waktu yang bersamaan

Misalnya, ada titik di mana kode utama akan memulai serat. Kode di dalam serat akan dieksekusi secara terpisah di utas yang berbeda

Juga, program utama tidak dapat menangguhkan atau mengakhiri serat. Hanya kode di dalam fiber yang dapat menangguhkan dirinya sendiri dan mengembalikan data apa pun ke program utama. Program utama, kemudian, dapat melanjutkan eksekusi Fiber dari titik penangguhan

Tumpukan lengkap program PHP dengan serat bisa jadi rumit, tetapi berikut adalah contoh sederhana penggunaan serat dalam program Echo

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_

function redirect(string $url): never { header('Location: ' . $url); exit(); }3 adalah tempat serat akan menunda pelaksanaannya. Kemudian, ketika kode utama memanggil serat lagi dengan function redirect(string $url): never { header('Location: ' . $url); exit(); }4, serat akan mulai dari titik suspensi. Oleh karena itu, itu akan menggema Selamat datang kembali ke Fiber

Inilah yang seharusnya terlihat seperti output

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends

Tipe Persimpangan Murni

PHP 8. 1 mendukung tipe persimpangan yang memungkinkan mendeklarasikan beberapa tipe kelas untuk sebuah nilai. Sepintas, ini terdengar mirip dengan tipe gabungan yang diperkenalkan di PHP 8. 0. Namun, ada perbedaan yang signifikan

Jenis serikat memungkinkan nilai untuk memenuhi salah satu jenis yang dinyatakan. Misalnya, jika string dan bilangan bulat dideklarasikan, nilainya dapat berupa string atau deklarasi

Namun, tipe persimpangan murni hanya mengizinkan nilai yang memenuhi semua tipe yang dinyatakan. Inilah sebabnya mengapa tipe persimpangan murni hanya dapat menggunakan tipe kelas atau antarmuka, karena sebagian besar tipe standar seperti string dan integer tidak dapat dipenuhi secara bersamaan.

Untuk mendeklarasikan tipe persimpangan murni di PHP 8. 1, gunakan operator & (DAN). Ini sebuah contoh

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_

function redirect(string $url): never { header('Location: ' . $url); exit(); }5 harus berupa objek yang mengimplementasikan antarmuka Iterator dan Countable. Jika tidak, itu akan menyebabkan kesalahan ketik

tidak pernah Jenis Pengembalian

Ada tipe baru yang tidak pernah kembali di PHP 8. 1. Ketika tipe pengembalian function redirect(string $url): never { header('Location: ' . $url); exit(); }_6 dideklarasikan dalam suatu fungsi, itu tidak akan mengembalikan nilai. Fungsi juga harus diakhiri dengan pernyataan keluar secara eksplisit atau implisit

Berikut adalah contoh fungsi sederhana dengan tipe pengembalian function redirect(string $url): never { header('Location: ' . $url); exit(); }6

function redirect(string $url): never { header('Location: ' . $url); exit(); }_

Saat Anda menggunakan tipe pengembalian function redirect(string $url): never { header('Location: ' . $url); exit(); }6, sisa kode dalam program tidak akan dieksekusi atau mengembalikan nilai apa pun. Dalam penggunaan praktis, tipe tidak pernah kembali berguna untuk menunjukkan bahwa fungsi tidak akan mengeksekusi sisa kode dan akan menghentikan atau melempar

Di satu sisi, tipe pengembalian function redirect(string $url): never { header('Location: ' . $url); exit(); }_6 mirip dengan tipe pengembalian array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);0. Namun, tipe pengembalian array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_0 melanjutkan eksekusi setelah fungsi

Tipe array_is_list

Fungsi array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_2 baru di PHP 8. 1 membantu Anda melihat apakah array berisi entri yang berupa daftar. Ini akan memeriksa kunci array - jika berurutan, mulai dari nol, tidak memiliki celah, dan semua bilangan bulat, itu akan mengembalikan true. Ini juga akan mengembalikan true secara default untuk array kosong

Misalnya, fungsi array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_2 berikut ini akan mengembalikan nilai true

array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);

Sebaliknya, berikut adalah contoh fungsi array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);2 yang salah

array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential

#[ReturnTypeWillChange] Atribut

Atribut baru ini menunjukkan ketidakcocokan jenis pengembalian tentatif yang seharusnya tidak menghasilkan pemberitahuan penghentian. Sebelum PHP 8. 0, sintaks atribut diuraikan sebagai komentar kode sehingga tidak menyebabkan kesalahan sintaks

Penambahan atribut baru array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_5 ke metode kelas di PHP 8. 1 versi tidak akan menimbulkan masalah - itu hanya akan mencegah pemberitahuan penghentian

Ini adalah contoh array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_5 dalam kode PHP

class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }

Perhatikan bahwa atribut ini tidak akan berpengaruh lagi saat jenis pengembalian tentatif ditingkatkan ke jenis pengembalian standar

readonlyProperties

array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_7 adalah properti kelas baru di PHP 8. 1 dan hanya dapat diinisialisasi satu kali dari kelas tempatnya dideklarasikan. Kelas apa pun dengan properti ini tidak akan dapat dimodifikasi dan akan menghasilkan kesalahan jika Anda memaksanya untuk mengubah nilainya

Berikut adalah contoh bagaimana Anda mendeklarasikan properti array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);7 di kelas

function pick_card(Suit $suit) {} pick_card(Suit::Spades);0

Sekarang, karena array_is_list([]); array_is_list([1, 2, 3]); array_is_list([‘rock’, 2, 3]); array_is_list([‘rock’, scissor]); array_is_list([0 => 'rock', 'scissor']); array_is_list([0 => 'rock', 1 => 'scissor']);_7 telah diinisialisasi, Anda tidak dapat mengubah array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 0 dalam kode

Jika Anda mencoba memasukkan baris seperti ini

function pick_card(Suit $suit) {} pick_card(Suit::Spades);1

Ini akan menghasilkan kesalahan ini

function pick_card(Suit $suit) {} pick_card(Suit::Spades);2

Fungsi fsync() dan fdatasync()

array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 1 dan array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 2 adalah tambahan baru untuk fungsi sistem file di PHP 8. 1. Mereka memiliki kemiripan dengan array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential _3, yang digunakan untuk membilas buffer ke sistem operasi. Namun, array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 1 dan array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 2 menyiram buffer ke penyimpanan fisik

Perbedaan utama di antara mereka adalah bahwa fungsi array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 1 menyertakan metadata saat menyinkronkan perubahan file, sedangkan array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 2 tidak

Berikut adalah contoh fungsi array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential _1 dalam sebuah kode

function pick_card(Suit $suit) {} pick_card(Suit::Spades);_3

Anda dapat menggunakan array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 1atau array_is_list([1 => 'rock', 'scissor']); // false, doesn’t start with 0 array_is_list([1 => 'rock', 0 => 'scissor']); // false, not in order array_is_list([0 => 'rock', 'suit' => 'paper']); false, non-integer keys array_is_list([0 => 'rock', 2 => 'paper']); false, non-sequential 2 di baris 6. Saat fungsi dipanggil, sistem operasi diminta untuk menyiram data ke penyimpanan

Fungsi ini berguna saat program membutuhkan penyimpanan data yang konsisten. Plus, itu memungkinkan untuk mengambil data jika aplikasi macet atau sistem gagal

Fungsi Natrium XChaCha20

Sodium adalah ekstensi PHP yang berisi pustaka kriptografi. Ini mendukung algoritme enkripsi XChaCha20, cipher aliran yang merupakan varian dari ChaCha20

Di PHP8. 1, tiga fungsi baru memungkinkan Anda mengenkripsi dan mendekripsi data menggunakan XChaCha20 tanpa autentikasi. Metode ini disebut mode terpisah, dan fungsinya adalah sebagai berikut

  • sodium_crypto_stream_xchacha20_keygen – menghasilkan kunci acak untuk digunakan dengan fungsi class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }1
  • sodium_crypto_stream_xchacha20 – menghasilkan keystream byte pseudorandom dengan memperluas nonce kriptografi dan kunci yang dihasilkan sebelumnya
  • sodium_crypto_stream_xchacha20_xor – mengenkripsi pesan menggunakan nonce dan kunci aman tanpa autentikasi

Bersamaan dengan fungsi baru, dua konstanta PHP baru didefinisikan di namespace global

  • class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }2, ditugaskan 32
  • class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }3, ditugaskan 24

baru di Inisialisasi

PHP 8. 1 sekarang memungkinkan penggunaan ekspresi baru untuk menginisialisasi nilai di dalam deklarasi fungsi

Saat menggunakan PHP8. 0, kita harus menginisialisasi nilai untuk parameter opsional di luar konstruktor. Meskipun ini berfungsi dengan baik, ini membuat kode sedikit lebih panjang. Berikut adalah contoh dari RFC baru

function pick_card(Suit $suit) {} pick_card(Suit::Spades);_4

Di PHP8. 1, kita cukup menulisnya seperti ini

function pick_card(Suit $suit) {} pick_card(Suit::Spades);5

Dukungan Pembongkaran Array dengan Kunci-String

Versi PHP sebelumnya menambahkan dukungan untuk operator penyebaran array (...). Ini berfungsi untuk membongkar array dan sebagai alternatif dari fungsi class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }4

Namun, operator spread digunakan untuk mendukung tombol numerik saja. Menggunakan operator atau fungsi untuk array dengan kunci string akan menghasilkan kesalahan

PHP 8. 1 sekarang mendukung pembongkaran array untuk array dengan kunci string. Misalkan Anda memiliki array ini

function pick_card(Suit $suit) {} pick_card(Suit::Spades);6

Anda dapat mengekstrak kunci array menggunakan operator spread

function pick_card(Suit $suit) {} pick_card(Suit::Spades);7

Atau, bongkar kunci array menggunakan fungsi class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }4

function pick_card(Suit $suit) {} pick_card(Suit::Spades);_8

Sintaks Callable kelas satu

PHP 8. 1 memperkenalkan sintaks callable kelas pertama yang baru untuk membuat callable dari dalam lingkup saat ini

Sebelum PHP 8. 1, sintaks untuk callable menggunakan class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }6, seperti ini

function pick_card(Suit $suit) {} pick_card(Suit::Spades);_9

Dengan sintaks baru, Anda dapat menggunakan class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }7 setelah objek alih-alih menggunakan class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }8. Ini membuatnya lebih mudah untuk membuat callable kelas satu. Berikut adalah contoh fungsi di atas menggunakan sintaks baru

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;0

Kelas IntlDatePatternGenerator Baru

Di versi PHP sebelumnya, Anda dapat membuat tanggal dan waktu yang dilokalkan hanya dengan IntlDateFormatter yang telah ditentukan sebelumnya. Ada delapan format yang telah ditentukan sebelumnya – empat format dasar dan empat varian relatif yang menggunakan kemarin, hari ini, dan besok

Meskipun ini adalah opsi yang masuk akal, ini tidak dapat disesuaikan seperti di PHP 8. 1

Kelas class Sample implements ArrayAccess { #[\ReturnTypeWillChange] public function offsetGet(mixed $offset) {} // ... }_9 yang baru memungkinkan Anda menentukan format untuk tanggal, bulan, dan waktu. Urutan persisnya sendiri dapat diserahkan kepada formatter

Berikut adalah contoh penggunaannya dari RFC IntlDatePatternGenerator

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;1

Variabel kerangka menentukan format tanggal dan waktu YYYYMMDD, sedangkan formatter menentukan urutan akhir. Dari kode diatas, kita mendapatkan dua hasil yang berbeda dari formatter. Namun, tanggalnya tetap menggunakan format YYYYMMDD

Konstanta Kelas akhir

Mendeklarasikan flag function pick_card(Suit $suit) {} pick_card(Suit::Spades);00 baru pada konstanta kelas mencegahnya ditimpa atau diperluas oleh sub-kelas

Jika Anda mencoba memperluas atau mengganti kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_00, itu akan mengakibatkan kesalahan fatal. Ini sebuah contoh

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;2

Itu akan menghasilkan

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;3

Bendera ini tidak dapat digunakan untuk konstanta function pick_card(Suit $suit) {} pick_card(Suit::Spades);02 karena tidak dapat diakses di luar kelas. Mendeklarasikan konstanta function pick_card(Suit $suit) {} pick_card(Suit::Spades);00 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);02 bersamaan akan menghasilkan kesalahan fatal

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;4

Notasi Angka Oktal Eksplisit

PHP mendukung beberapa sistem angka, seperti default desimal (basis-10), biner (basis-2), oktal (basis-8), dan hex (basis-16). Namun, sistem angka selain desimal harus menggunakan awalan berikut

  • Hex – 0x
  • Biner – 0b
  • Oktal – 0

PHP 8. 1 memperkenalkan awalan o (huruf kecil) dan O (huruf besar) untuk angka oktal. Ini berarti angka oktal sekarang lebih jelas dan mudah dibaca

Lihatlah contoh-contoh ini

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;5

Perhatikan bahwa awalan baru ini hanyalah tambahan. Awalan 0 yang ada akan bekerja dengan cara yang sama di PHP 8. 1

$_File. nilai full_path untuk Upload Direktori

function pick_card(Suit $suit) {} pick_card(Suit::Spades);05 adalah variabel super global yang berisi nama, ukuran, dan tipe MIME dari file yang diunggah

Di versi sebelumnya dari PHP 8. 1, function pick_card(Suit $suit) {} pick_card(Suit::Spades);_05 tidak menyimpan jalur relatif atau direktori yang tepat ke server. Oleh karena itu, Anda tidak dapat mengunggah seluruh direktori dengan formulir unggah file HTML

Kunci function pick_card(Suit $suit) {} pick_card(Suit::Spades);_07 baru memecahkan masalah. Ini menyimpan jalur relatif dan merekonstruksi struktur direktori yang tepat di server, memungkinkan pengunggahan direktori

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;6

Ada dua file berbeda. txt dalam contoh di atas, tetapi disimpan di direktori yang berbeda. Jika Anda menggunakan array function pick_card(Suit $suit) {} pick_card(Suit::Spades);_08, akan ada entri duplikat, karena kedua file ditentukan dengan nama yang sama

Namun, larik function pick_card(Suit $suit) {} pick_card(Suit::Spades);_09 berisi jalur untuk setiap file. Ini mencegah duplikasi yang terjadi pada array sebelumnya

Pengodean dan Dukungan Lossless WebP untuk GdImage

Di PHP8. 1, ada dukungan pengkodean WebP lossless baru untuk objek GdImage. Itu dapat diaktifkan menggunakan ekstensi GD dan libwebp versi 0. 2. 0

Konstanta PHP baru untuk mendeklarasikan pengkodean WebP lossless adalah function pick_card(Suit $suit) {} pick_card(Suit::Spades);10, bersama dengan fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);11. Dalam kode PHP, tampilannya seperti ini

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;7

Dukungan Gambar AVIF

Selain dukungan WebP, PHP 8. 1 – menggunakan ekstensi GD, juga mendukung format gambar AVIF. Ini adalah format gambar yang relatif baru, berdasarkan format video AV1. Ini memberikan kompresi yang lebih tinggi dan bebas royalti

Untuk menambahkan dukungan gambar AVIF ke pemrosesan gambar PHP, Anda harus mengkompilasi ekstensi GD dengan dukungan AVIF. Anda juga membutuhkan libavid versi 0. 8. 2 atau lebih tinggi untuk ekstensi GD

Tergantung pada sistem operasi Anda, jalankan perintah berikut

  • Ubuntu/Debian – function pick_card(Suit $suit) {} pick_card(Suit::Spades);12
  • RHEL/Fedora – function pick_card(Suit $suit) {} pick_card(Suit::Spades);13

Langkah selanjutnya adalah menjalankan function pick_card(Suit $suit) {} pick_card(Suit::Spades);_14 dengan skrip function pick_card(Suit $suit) {} pick_card(Suit::Spades);15 untuk mengkompilasi PHP dengan dukungan AVIF

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_8

Kemudian, jalankan perintah berikut untuk menguji apakah dukungan AVIF sekarang diaktifkan

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_9

Dukungan DNS-over-HTTPS

DNS-over-HTTPS meningkatkan privasi dan keamanan dengan menjalankan resolusi DNS melalui protokol HTTPS. Ini mengenkripsi data yang dikirim oleh komputer klien ke DNS resolver

Ekstensi Curl di PHP 8. 1 sekarang memungkinkan menentukan server untuk protokol DNS-over-HTTPS. Untuk menggunakan fitur baru ini, Anda perlu mengkompilasi PHP dengan libcurl 7. 62 atau lebih tinggi. Konon, sebagian besar sistem operasi sudah menggunakan Curl 7. 68, jadi ini seharusnya tidak menjadi masalah

Untuk menentukan DNS-over-HTTPS, gunakan opsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);16

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_0

Perhatikan bahwa URL server harus berupa URL HTTPS, dan akan divalidasi saat permintaan dijalankan. Permintaan akan gagal jika URL untuk server DNS tidak valid atau tidak memberikan respons yang valid

Kami menggunakan server DNS publik Google pada contoh di atas, tetapi Anda juga dapat memilih server DNS-over-HTTPS publik lainnya

Kelas CurlStringFile untuk Upload File dari Strings

Ekstensi Curl memiliki kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_17 baru yang berfungsi serupa dengan kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);18 untuk mengunggah file. Namun, kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_18 hanya menerima URI atau jalur file, sedangkan function pick_card(Suit $suit) {} pick_card(Suit::Spades);17 menerima konten file alih-alih jalur atau URI

PHP8 baru. Kelas 1 mempermudah pembuatan permintaan upload file menggunakan data yang tersimpan di memori. Misalnya, gunakan ini untuk mengunggah gambar yang diproses dalam PHP atau disimpan dalam variabel PHP

Berikut adalah contoh penggunaan function pick_card(Suit $suit) {} pick_card(Suit::Spades);_17 dalam kode PHP

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_1

Dukungan Algoritma untuk MurmurHash3 dan xxHash Hash

PHP 8. 1 memperkenalkan dukungan untuk dua algoritme hashing non-kriptografis – MurmurHash3 dan xxHash. Hash non-kriptografis lebih cepat daripada sebagian besar algoritma hashing PHP saat ini, namun tetap memberikan dispersi dan keacakan keluaran yang bagus

MurmurHash3

Untuk MurmurHash3, berikut varian yang didukung

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);22 – hash 32-bit
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);23 – hash 128-bit pada arsitektur x86
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);24– 128-bit hash pada arsitektur x64

Untuk hash string menggunakan MurmurHash3, gunakan sintaks seperti ini

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_2

Anda dapat memperbarui nilai secara berurutan tanpa melakukan hashing string input secara keseluruhan. Ini dikenal sebagai hash streaming

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_3

xxHash

PHP 8. 1 mendukung algoritma xxHash berikut

  • xxh32 – keluaran hash 32-bit
  • xxh64 – keluaran hash 64-bit
  • xxh3 – keluaran hash 64-bit
  • xxh128 – keluaran hash 128-bit

Berikut sintaks untuk hash sebuah string menggunakan xxHash

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_4

Mirip dengan MurmurHash3, xxHash juga merupakan hash streaming yang memungkinkan Anda memperbarui nilai secara berurutan

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_5

Peningkatan Kinerja

PHP 8. 1 menambahkan fitur baru untuk menghapus overhead kelas pewarisan, Cache Warisan

Sebelumnya, opcache mengkompilasi dan meng-cache kelas PHP secara terpisah. Kemudian, itu menautkan kelas-kelas ini pada waktu proses selama setiap permintaan

Proses penautan membutuhkan pemeriksaan kompatibilitas dan metode peminjaman, properti, atau konstanta dari kelas dan sifat induk. Ini memperlambat eksekusi, meskipun hasilnya akan sama untuk setiap permintaan

Cache Warisan baru menyelesaikan ini dengan menautkan semua kelas dependen unik dan menyimpannya di memori bersama opcache. Tambalan ini juga menghilangkan batasan untuk kelas yang tidak dapat diubah – semua kelas yang disimpan di opcache sekarang tidak dapat diubah

Ini menghasilkan lebih sedikit instruksi untuk setiap permintaan dan peningkatan 8% untuk Symfony “Hello, World. aplikasi

MySQL_I_REFRESH_Replika Konstan

MySQLi memperkenalkan konstanta baru untuk PHP 8. 1 bernama function pick_card(Suit $suit) {} pick_card(Suit::Spades);_25. Konstanta ini memiliki fungsi yang sama dengan konstanta ________2______26 yang ada

Nama baru tersebut membahas ketidakpekaan rasial terkait terminologi budak. Namun, konstanta function pick_card(Suit $suit) {} pick_card(Suit::Spades);26 yang ada tidak akan dihapus atau tidak digunakan lagi di PHP 8. 1

Perubahan dalam PHP 8. 1

PHP 8. 1 memperkenalkan beberapa perubahan dalam sintaks dan fungsionalitas. Sebagian besar dari mereka tidak mengubah fitur yang ada secara signifikan, tetapi Anda harus menyadari perubahan ini jika Anda terus menggunakan aplikasi PHP yang ada di PHP 8. 1

Fungsi Enkode/Dekode HTML Mengonversi Tanda Kutip Tunggal dan Menggantinya secara Default

PHP 8.1 brings changes to functions that decode and encode HTML entities. HTML entity is a textual representation of a character in the HTML code. Common examples of HTML entities are the < and > characters that make up HTML tags such as

or .

Browser akan menafsirkan karakter ini sebagai kode HTML jika Anda menggunakannya dalam dokumen HTML. Oleh karena itu, jika Anda ingin browser menampilkannya dalam bentuk aslinya, Anda harus menggunakan entitas HTML-nya

For example, you want the browser to render

as a text. Thus, you write it in the HTML document as <h1>. < and > represent < and > respectively.

PHP memiliki beberapa fungsi untuk mengubah karakter HTML menjadi entitas HTML

  • htmlspecialchars – mengubah karakter khusus menjadi entitas HTML
  • htmlspecialchars_decode – mengubah entitas HTML menjadi karakter khusus
  • htmlentities – mengubah karakter yang berlaku menjadi entitas HTML
  • html_entity_decode – mengonversi entitas HTML menjadi karakter terkait
  • get_html_translation_table – mengembalikan tabel terjemahan untuk fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);28 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);29

Di versi PHP sebelumnya, fungsi ini tidak mengonversi tanda kutip tunggal (') dan akan mengembalikan string kosong. Ini berubah dalam PHP 8. 1 karena mereka sekarang mengubah karakter kutipan tunggal menjadi entitas HTML-nya, '

Perubahan dilakukan dengan mengalihkan tanda tangan function pick_card(Suit $suit) {} pick_card(Suit::Spades);_30 pada fungsi menjadi function pick_card(Suit $suit) {} pick_card(Suit::Spades);31. Berikut adalah sintaks baru

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_32
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_33
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_34
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_35
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_36

Shell Interaktif Membutuhkan Ekstensi Readline

Di versi PHP sebelumnya, dimungkinkan untuk membuka shell interaktif dengan opsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);37. Namun, fitur interaktif tidak diaktifkan karena memerlukan ekstensi readline

Oleh karena itu, opsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_37 tidak ada artinya dan sama dengan membuka shell non-interaktif menggunakan perintah function pick_card(Suit $suit) {} pick_card(Suit::Spades);39

Ini sekarang diperbaiki di PHP 8. 1. Menggunakan opsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_37 di baris perintah tanpa mengaktifkan ekstensi readline akan mengembalikan pesan kesalahan

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_6

Namun, jika Anda mengaktifkan ekstensi, itu akan membuka shell interaktif

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_7

Mode Kesalahan Default MySQLi Diatur ke Pengecualian

Sebelum PHP 8. 1, perilaku penanganan kesalahan default dari MySQLi adalah membungkam kesalahan. Pengembang harus menyetel fungsi penanganan kesalahan mereka, atau kode tidak akan mengikuti penanganan kesalahan yang ketat

Di PHP8. 1, penanganan kesalahan default diatur untuk membuang pengecualian

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_8

Ini adalah perubahan yang merusak dan, karena nilainya berbeda, ini akan menyebabkan masalah kompatibilitas. Namun, selesaikan ini dengan secara eksplisit mengatur penanganan kesalahan menggunakan fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);41 sebelum membuat koneksi MySQLi pertama

$fiber = new Fiber(function(): void { echo "Hello from the Fiber\n"; Fiber::suspend(); echo "Welcome back to the Fiber\n"; }); echo "Starting the program\n"; $fiber->start(); echo "Taken control back\n"; echo "Resuming Fiber\n"; $fiber->resume(); echo "Program ends\n";_9

Akhir Baris yang Dapat Disesuaikan untuk Fungsi Penulisan CSV

Pada versi PHP sebelumnya, fungsifunction pick_card(Suit $suit) {} pick_card(Suit::Spades);42 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);43 di-hard-code menjadi karakter end-of-line "\n". PHP 8. 1 memperkenalkan fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_44 baru untuk memungkinkan karakter end-of-line yang dapat disesuaikan

Namun, parameter ini bersifat opsional, dan fungsi akan tetap menggunakan "\n" secara default. Jika Anda memiliki kode atau aplikasi yang tidak menetapkan karakter end-of-line secara eksplisit, itu akan tetap menggunakan "\n"

Jika Anda ingin menggunakan parameter function pick_card(Suit $suit) {} pick_card(Suit::Spades);_44 untuk karakter end-of-line khusus, berikut adalah contoh sintaks

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_0

Perhatikan bahwa Anda harus menggunakan tanda kutip ganda dengan karakter akhir baris seperti \r, \n, atau \r\n agar dapat ditafsirkan dengan benar

Peringatan Pemanggilan Fungsi Ringkas untuk Parameter Dengan String Non-string dan Non-array

Fungsi kompak berguna untuk membuat array yang berisi variabel dan nilainya. Berikut adalah contoh fungsi kompak

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_1

Dalam dokumentasinya, fungsi compact hanya menerima parameter string atau array dengan nilai string. Namun, ini mungkin terlihat seperti menerima parameter non-string dan non-array, tetapi sebenarnya mengabaikannya

Jika Anda mendeklarasikan tipe-ketat dengan function pick_card(Suit $suit) {} pick_card(Suit::Spades);_46, fungsi tersebut juga tidak akan melakukan pemeriksaan tipe-ketat

Ini diubah dalam PHP 8. 1, karena fungsi ringkas sekarang menampilkan peringatan jika argumen berisi non-string atau larik yang tidak terdiri dari kunci string

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_2

Yang mengatakan, mendeklarasikan tipe yang ketat tidak akan berdampak, dan fungsi tersebut tetap tidak akan menimbulkan kesalahan tipe

Algoritma Tanda Tangan Phar Berubah Dari SHA1 ke SHA256

Ekstensi Phar digunakan untuk mengemas aplikasi PHP ke dalam file arsip Phar. File ini kemudian dapat dieksekusi di lingkungan PHP apa pun

Setiap file Phar berisi tanda tangan untuk memverifikasi integritas file sebelum eksekusi. Algoritme tanda tangan default untuk file Phar dulunya adalah SHA1. Namun, dalam PHP 8. 1, yang berubah menjadi SHA256

Anda dapat mengganti algoritme tanda tangan menggunakan function pick_card(Suit $suit) {} pick_card(Suit::Spades);47 dan memilih MD5, SHA1, SHA256, atau SHA512. Berikut cuplikan kodenya

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_3

Perhatikan bahwa semua versi PHP sejak 5. 3 mendukung algoritma SHA256. Ini berarti semua file Phar dihasilkan dengan PHP 8. 1 masih akan kompatibel dengan versi lama. Namun, dua algoritme tanda tangan baru – OpenSSL-256 dan OpenSSL-512 – tidak kompatibel dengan versi PHP yang lebih lama

Implementasi JsonSerializable di SplFixedArray

Spfunction pick_card(Suit $suit) {} pick_card(Suit::Spades);48 membuat sejumlah elemen tetap dalam array dan kuncinya akan berupa bilangan bulat dalam rentang

Dalam versi PHP sebelumnya, fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_49 mengkodekan function pick_card(Suit $suit) {} pick_card(Suit::Spades);50 instance sebagai objek, bukan array. Ini akan berubah saat function pick_card(Suit $suit) {} pick_card(Suit::Spades);50 mengimplementasikan antarmuka JsonSerializable dan menyandikannya sebagai array

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_4

Sebelum PHP 8. 1, outputnya adalah sebagai berikut

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_5

Di PHP8. 1, akan seperti ini

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_6

Resource untuk Migrasi Objek

Pengembangan PHP berencana untuk memindahkan sumber daya ke objek kelas standar

Salah satu masalahnya adalah Anda tidak dapat memaksa atau menggunakan tipe sumber daya. Plus, kurangnya jenis sumber daya mencegah beberapa fungsi terkait sumber daya menambahkan jenis yang lebih ketat

Tantangan lainnya adalah mempertahankan beberapa jenis sumber daya dengan fitur seperti status internal, penanganan memori, dan penghitungan referensi. Oleh karena itu, dalam hal ini, kelas PHP dapat digunakan sebagai gantinya

Itulah beberapa alasan mengapa tim PHP memigrasikan tipe sumber daya ke objek. Namun, jenis sumber daya telah digunakan secara luas dalam aplikasi PHP, sehingga tim perlu memastikan migrasi yang tidak mengganggu

Sumber Daya Koneksi FTP Sekarang Objek Kelas FTP\Connection

Pada versi PHP sebelumnya, kami menggunakan fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_52 atau function pick_card(Suit $suit) {} pick_card(Suit::Spades);53 untuk membuat koneksi FTP. Fungsi-fungsi ini mengembalikan sumber daya bertipe function pick_card(Suit $suit) {} pick_card(Suit::Spades);_54

Di PHP8. 1, fungsi ini mengembalikan kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_55. Kelas baru ini juga dinyatakan final, artinya Anda tidak dapat memperpanjangnya. Ini juga meminimalkan potensi masalah kompatibilitas ke belakang jika inti PHP mengubah metode kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);55

Pengidentifikasi Font GD Sekarang Menjadi Objek Kelas GdFont

Pada versi PHP sebelumnya, fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_57 dari ekstensi GD digunakan untuk mengembalikan ID sumber daya function pick_card(Suit $suit) {} pick_card(Suit::Spades);58 dalam bilangan bulat

Dalam versi PHP yang baru, ID sumber daya telah bermigrasi ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);59

Agar perubahan tidak terlalu mengganggu, semua fungsi yang menerima ID sumber daya dari function pick_card(Suit $suit) {} pick_card(Suit::Spades);60eloadfont() juga menerima objek kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);59 yang baru

file_info Sumber Daya Sekarang Objek finfo

Beberapa fungsi dari ekstensi finfo mengembalikan dan menerima objek sumber daya dengan tipe function pick_card(Suit $suit) {} pick_card(Suit::Spades);62. Ini sekarang diubah menjadi objek kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_63 agar selaras dengan rencana migrasi PHP

Perhatikan bahwa kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_63 telah tersedia sejak PHP 5. 3. Namun, fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_65 menerima atau mengembalikan sumber daya. Ini sekarang sudah diperbaiki, dan bahkan dimungkinkan untuk mengubah nilai pengembalian ke objek

Ini adalah fungsi yang dipengaruhi oleh perubahan

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_66
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_67
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_68
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_69
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);70

Sumber Daya imap Sekarang Menjadi Objek Kelas IMAP\koneksi

Sumber daya function pick_card(Suit $suit) {} pick_card(Suit::Spades);_71 dipindahkan ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);72. Sebelum ini, fungsi function pick_card(Suit $suit) {} pick_card(Suit::Spades);_73 mengembalikan objek sumber daya bertipefunction pick_card(Suit $suit) {} pick_card(Suit::Spades);74

Untuk meminimalkan gangguan migrasi, semua fungsi yang menerima sumber daya akan berfungsi dengan kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);72 yang baru

Mirip dengan kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);55, kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);72 juga dinyatakan final untuk mencegahnya diperpanjang dan menyebabkan masalah kompatibilitas ke belakang

Sumber Daya PostgreSQL Sekarang \PgSql\Connection, \PgSql\Result, dan Objek \PgSql\Lob

PostgreSQL adalah ekstensi basis data PHP yang menggunakan objek sumber daya untuk koneksi dan hasil basis data. Tiga objek sumber daya untuk PostgreSQL dimigrasikan ke objek kelas

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);78 sumber daya ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);79
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);80 sumber daya ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);81
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);82 sumber daya objek besar ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);83

Semua fungsi PostgreSQL yang mengembalikan dan menerima objek sumber daya kini mendukung objek kelas baru

Sumber Daya LDAP Sekarang Objek LDAP\Connection, LDAP\Result, dan LDAP\ResultEntry

LDAP (Lightweight Directory Access Protocol) adalah ekstensi PHP untuk mengakses Server Direktori, database khusus yang menyimpan informasi dalam struktur pohon

Ekstensi ini menggunakan tiga objek sumber daya sebelum PHP 8. 1. Ketiga objek ini sekarang dimigrasikan ke instance kelas baru

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);84 sumber daya ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);85
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);86 sumber daya ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);87
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);88 sumber daya ke kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);89

Semua fungsi LDAP yang mengembalikan atau menerima objek sumber daya kini menerima objek kelas baru

Sumber Daya Pspell Config Sekarang PSpell\Dictionary, Objek Kelas PSpell\Config

Ekstensi PHP Pspell memungkinkan Anda memeriksa ejaan dan memberikan saran kata. Ini menggunakan function pick_card(Suit $suit) {} pick_card(Suit::Spades);_90 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);90 jenis objek sumber daya konfigurasi dengan pengidentifikasi bilangan bulat

Objek sumber daya ini digantikan oleh objek kelas function pick_card(Suit $suit) {} pick_card(Suit::Spades);_92 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);93 di PHP 8. 1. Berikut adalah fungsi untuk membuat objek function pick_card(Suit $suit) {} pick_card(Suit::Spades);_92 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);93

  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_96
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_97
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_98
  • function pick_card(Suit $suit) {} pick_card(Suit::Spades);_99

Seperti sumber daya yang dimigrasikan lainnya, semua fungsi yang menerima function pick_card(Suit $suit) {} pick_card(Suit::Spades);90 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;01 sumber daya juga akan menerima function pick_card(Suit $suit) {} pick_card(Suit::Spades);92 dan function pick_card(Suit $suit) {} pick_card(Suit::Spades);93

Penghentian dalam PHP 8. 1

PHP 8. 1 menghentikan beberapa fitur, termasuk lebih dari sepuluh fungsi PHP yang sudah ada. Berikut ikhtisar fitur dan fungsi yang tidak digunakan lagi di PHP 8. 1

Pembatasan Penggunaan $Global

Variabel enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_04 memberikan referensi ke semua variabel lingkup global. Ini juga mengandung nilai "superglobal", termasuk enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;05, enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;06, dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;07

PHP 8. 1 tidak sepenuhnya menghentikan fitur tetapi membatasi modifikasi apa pun pada larik enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;04, seperti menghancurkan larik, menimpa nilainya, dan mereferensikan variabel enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;04

Ini karena mendukung beberapa perilaku variabel enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_04 membutuhkan kerja teknis yang rumit

Jika Anda mencoba melakukan modifikasi ini di PHP 8. 1, Anda akan mendapatkan kesalahan fatal. Berikut adalah contoh membuat perubahan massal ke variabel enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;04

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_7

Ini akan menghasilkan kesalahan berikut

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_8

Perhatikan bahwa penggunaan hanya-baca dari variabel enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_04 dan modifikasi ke elemen array individu masih diperbolehkan

Meneruskan null ke Fungsi Internal yang tidak dapat dibatalkan Tidak Diizinkan

Di PHP, Anda seharusnya tidak dapat meneruskan nilai nol ke fungsi yang tidak dapat dibatalkan. Pembatasan berfungsi untuk fungsi yang ditentukan pengguna di versi PHP sebelumnya. Fungsi internal diam-diam menerima nilai nol

Untuk menjaga konsistensi, fungsi internal tidak lagi menerima nilai null. Meneruskan argumen null ke non-nullable akan mengembalikan pemberitahuan penghentian

Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_9

Penghentian ini adalah bagian dari rencana untuk menghapus fungsionalitas tersebut. Menurut RFC-nya, meneruskan nilai nol ke fungsi internal yang tidak dapat dibatalkan akan menghasilkan TypeError. Itu akan membuat fungsi internal konsisten dengan perilaku saat ini dari fungsi yang ditentukan pengguna

Fungsi yang Tidak Digunakan Lagi

PHP 8. 1 juga menghentikan 11 fungsi PHP yang dapat memengaruhi aplikasi yang ada

Antarmuka Serializable yang tidak digunakan lagi

Kelas PHP memiliki logika serialisasi yang unik. Misalnya, mereka dapat mencegah data sensitif tertentu dari serialisasi atau membangun kembali koneksi server jarak jauh menggunakan teks berseri. Mereka menggunakan tiga metode berbeda

  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;13 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;14 metode ajaib
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;15 antarmuka, enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;16, dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;17 metode
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;18 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;19 metode ajaib

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;18 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;19 diperkenalkan di PHP 7. 4 untuk mengatasi masalah dengan antarmuka Serializable. Namun, rencana terakhir adalah menghapus antarmuka enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_15 di versi PHP mendatang

Untuk PHP8. 1, menerapkan antarmuka enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;23 pada kelas tanpa metode enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;18 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;19 akan menghasilkan kesalahan penghentian

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_0

Ini akan menghasilkan pesan kesalahan berikut

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_1

Namun, masih mungkin untuk mengimplementasikan antarmuka Serializable selama kelas juga mengimplementasikan metode ajaib enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;18 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;19

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_2

Antarmuka enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_15 mendekode muatan serialisasi yang ada, dan pemberitahuan penghentian tidak akan muncul. Jika tidak perlu untuk PHP 7. 3 dukungan dalam aplikasi, Anda dapat mengganti antarmuka Serializable dengan metode ajaib ________7______18and enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;19

Autovivifikasi yang tidak digunakan lagi pada False

Autovivifikasi adalah pembuatan otomatis array dari nilai false dan null. Meskipun fitur ini banyak digunakan dalam aplikasi PHP, membuat larik secara otomatis dari nilai yang salah tidaklah ideal karena mungkin merupakan tanda kode buggy

Oleh karena itu, PHP8. 1 tidak lagi menggunakan autovivifikasi hanya untuk nilai yang salah. Menerapkan autovivifikasi pada variabel palsu di PHP 8. 1 akan menghasilkan pemberitahuan penghentian

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_3

Dalam rilis mendatang, rencananya adalah untuk mengeluarkan kesalahan fatal pada implementasi tersebut. Sedangkan untuk nilai undefined dan null, autovivifikasi masih diperbolehkan

mysqli yang sudah tidak digunakan lagi. get_client_info dan mysqli_get_client_info ($param)

Meneruskan parameter ke fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;31 dan metode enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;32 digunakan untuk mengembalikan versi klien MySQLi melalui konstanta string enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;33

Sebelum PHP 8. 1, ada empat opsi yang memungkinkan untuk mengekspos konstanta client_info

  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_34
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_35
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_36
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_37

Di sisi lain, MySQL Native Driver (MySQLnd) menampilkan konstanta hanya dengan dua opsi – konstanta dan pemanggilan fungsi

Meneruskan parameter ke fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;31 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;32 sekarang tidak digunakan lagi dalam upaya menyatukan metode akses

Menggunakan metode enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_40 di kelas enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;41 sekarang mengeluarkan pemberitahuan penghentian

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_4

Meneruskan parameter ke fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;31 juga akan menghasilkan pemberitahuan penghentian

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_5

Alih-alih menggunakan opsi yang tidak digunakan lagi, gunakan fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;31 tanpa parameter

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_6

Konversi Float ke Int Implisit Tidak Kompatibel yang Tidak Digunakan Lagi

Ketik pemaksaan umum di PHP, dan dalam kebanyakan kasus, mereka sangat membantu. Namun, masalah muncul ketika angka float diubah menjadi bilangan bulat karena dapat menyebabkan hilangnya data. Misalnya, 1. 618 akan diubah menjadi 1, kehilangan nilai pecahannya

PHP 8. 1 mengatasi masalah ini dengan mengeluarkan pemberitahuan penghentian jika float yang tidak kompatibel secara implisit dipaksa menjadi bilangan bulat. Pemberitahuan harus mencegah hilangnya nilai pecahan yang tidak diinginkan

Di bawah ini adalah contoh mendeklarasikan fungsi dengan tipe kembalian int. Saat fungsi dipanggil, PHP akan mengubah nilai 1. 618 ke bilangan bulat, menghasilkan pemberitahuan penghentian

function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_7

Pemberitahuan penghentian tidak akan dipancarkan jika nilainya adalah float yang kompatibel dengan bilangan bulat. Menurut RFC, berikut adalah karakteristik pelampung yang kompatibel dengan bilangan bulat

  • Itu adalah angka
  • Itu berada dalam kisaran bilangan bulat PHP
  • Itu tidak memiliki bagian pecahan

Filter yang tidak digunakan lagi. default dan filter. default_options DI SINI Pengaturan

Pengaturan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_44 INI menerapkan filter ke semua super global PHP sesuai dengan nilainya. Nilai default untuk pengaturan ini adalahenum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_45 – ini menghindari aplikasi filter apa pun di super global

Masalah dengan pengaturan ini adalah dapat mengembalikan fungsi kutipan ajaib dengan nilai enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;46. Fitur ini telah dihapus di PHP 5. 4 karena pendekatan yang tidak dapat diandalkan untuk sanitasi input pengguna

Untuk mengatasinya, menetapkan nilai apa pun selain enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;47 ke pengaturan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;44 INI akan mengeluarkan pemberitahuan penghentian PHP pada waktu mulai. Tidak ada peringatan terpisah untuk enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_49, tetapi dua pengaturan INI akan dihapus di versi PHP utama berikutnya

Date_sunrise dan date_sunset tidak digunakan lagi

Fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_50 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;51 mengembalikan waktu matahari terbit dan terbenam dengan mengambil nilai default enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;52 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;53 dari pengaturan PHP INI. Sayangnya, tidak ada fungsi lain yang menggunakan pengaturan INI, dan konsepnya sendiri tidak masuk akal

Akibatnya, fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;50 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;51 tidak digunakan lagi di PHP 8. 1 dan digantikan oleh fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_56. Sesuai dengan penghentian, setelan INI berikut juga tidak digunakan lagi

  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_52
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_53
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_59
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;60

Menggunakan fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_61 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;62 di PHP 8. 1 akan mengeluarkan peringatan penghentian. Namun, menyetel nilai INI terkait atau menggunakan fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;63 tidak akan menghasilkan pemberitahuan

strptime yang tidak digunakan lagi

Fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_64 mem-parsing string tanggal atau waktu ke dalam array. Menggunakan fungsi ini pada beberapa distribusi Linux seperti Alpine dapat menyebabkan perilaku yang tidak terduga karena menggunakan pustaka musl C. Selain itu, fungsi ini berbasis lokal dan dapat terpengaruh jika Anda menjalankan kode lain di utas berbeda

Manual fungsi merekomendasikan penggunaan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;65 karena lebih konsisten dan tidak mengalami masalah yang sama. Alternatif lain juga tersedia, seperti enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;66 yang lebih berorientasi objek dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;67 untuk parsing yang bergantung pada lokal

Akibatnya, fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_64 tidak digunakan lagi karena opsi yang lebih konsisten

Tidak digunakan lagi strftime dan gmstrftime

Fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_69 dan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;70 mirip dengan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;64. Mereka memformat stempel waktu dan tanggal sesuai dengan pengaturan lokal, kecuali bahwa enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;72 mengembalikan waktu dalam GMT

Sayangnya, fungsi ini juga mengalami masalah yang sama seperti enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;64 dalam hal format yang didukung dan perilaku

Fungsi ini tidak digunakan lagi dan diganti dengan fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;74 atau enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;75. Untuk penggunaan yang bergantung pada lokal, enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_76 adalah pengganti yang ideal

Ekstensi mhash*() atau hash yang tidak digunakan lagi

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;77 fungsi dibawa ke PHP dengan ekstensi mhash. Namun, ekstensi ini diganti dengan ekstensi hash di PHP 5. 3. Fungsi hanya dapat digunakan dengan ekstensi hash dan opsi konfigurasi PHP enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;78

Sejak PHP 7. 4, ekstensi hash menjadi satu bundel dengan PHP. enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_79 masih dapat digunakan karena opsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;78 masih didukung untuk tujuan kompatibilitas

Namun, tim PHP tidak lagi menggunakan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;81 di PHP 8. 1 dan akan menghapusnya di PHP 9. 0. Penggunaan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_81 berikut akan mengembalikan peringatan penghentian

  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_83
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_84
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_85
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_86
  • enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_87

Karena sekarang hash adalah ekstensi default, sebaiknya gunakan fungsi enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;88 sebagai gantinya

PDO yang tidak digunakan lagi. FETCH_SERIALIZE

enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;89 digunakan sebagai bendera untuk metode pengambilan pernyataan PDO. Kemudian, PDO seharusnya memanggil unserialize pada data yang diambil dari database

Namun, fungsi ini tidak dapat digunakan. Selain itu, dengan dihentikannya antarmuka enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_15, tim PHP juga memutuskan untuk menghentikan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;89

Menggunakan enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_89 di PHP 8. 1 akan mengembalikan pemberitahuan penghentian

MySQLi yang sudah tidak digunakan lagi. properti mysqli_driver->driver_version

Properti enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;_93 di ekstensi MySQLi seharusnya mengembalikan nilai versi driver. Namun, properti ini belum diperbarui selama 13 tahun meskipun banyak perubahan pada pengemudi

Oleh karena itu, properti ini dianggap tidak berarti dan tidak digunakan lagi di PHP 8. 1

Pastikan situs web Anda dapat menangani semuanya – mulai dari lalu lintas tinggi hingga waktu pemuatan yang cepat, dan banyak lagi. Beli Hosting Web

Kesimpulan

Sebagai versi utama baru, PHP 8. 1 menghadirkan banyak fitur baru, perubahan, dan penghentian yang merupakan kabar baik bagi pengembang PHP

Misalnya, fitur seperti serat harus membuka peluang baru untuk berkreasi dengan eksekusi pengkodean. Bahkan perubahan kecil seperti konversi kutipan tunggal ke entitas HTML sangat disambut baik

Anda dapat memeriksa dokumentasi resmi PHP untuk melihat atau daftar penghentian untuk informasi lebih lanjut tentang PHP 8. 1

Hostinger akan mendukung PHP 8. 1, tetapi kami akan menyimpan opsi untuk versi PHP yang lebih lama jika Anda membutuhkannya. Namun, kami sangat menyarankan pindah ke PHP 8. 1 untuk mengakses peningkatan baru dan mempertahankan kompatibilitas dengan kerangka kerja dan pustaka

Penulis

Leonardo N

Leo adalah seorang fanatik dan kontributor WordPress. Dia suka mengikuti berita dan pembaruan WordPress terbaru, dan berbagi pengetahuannya untuk membantu orang membangun situs web yang sukses. Saat tidak bekerja, dia berkontribusi pada tim dokumentasi WordPress dan memanjakan anjingnya

Postingan terbaru

LIHAT SEMUA