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
- Login ke cPanel hosting Anda
- Klik menu MultiPHP Manager
- 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 endsTipe 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);0Sekarang, 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);1Ini akan menghasilkan kesalahan ini
function pick_card(Suit $suit) {} pick_card(Suit::Spades);2Fungsi 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);_3Anda 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);_4Di PHP8. 1, kita cukup menulisnya seperti ini
function pick_card(Suit $suit) {} pick_card(Suit::Spades);5Dukungan 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);6Anda dapat mengekstrak kunci array menggunakan operator spread
function pick_card(Suit $suit) {} pick_card(Suit::Spades);7Atau, 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);_8Sintaks 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);_9Dengan 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’;0Kelas 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’;1Variabel 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’;2Itu akan menghasilkan
enum Suit: string { case Spades = ‘10’; case Hearts = ‘8’; case Diamonds = ‘5’; case Clubs = ‘3’;3Bendera 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’;4Notasi 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’;5Perhatikan 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’;6Ada 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’;7Dukungan 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’;_8Kemudian, 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’;_9Dukungan 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";_0Perhatikan 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";_1Dukungan 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";_2Anda 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";_3xxHash
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";_4Mirip 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";_5Peningkatan 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";_6Namun, 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";_7Mode 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";_8Ini 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";_9Akhir 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_0Perhatikan 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_1Dalam 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_2Yang 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_3Perhatikan 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_4Sebelum 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_5Di PHP8. 1, akan seperti ini
Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_6Resource 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
Ini akan menghasilkan kesalahan berikut
Starting the program Hello from the Fiber Taken control back Resuming Fiber Welcome back to the Fiber Program ends_8Perhatikan 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_9Penghentian 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); }_0Ini akan menghasilkan pesan kesalahan berikut
function count_and_iterate(Iterator&\Countable $value) { foreach($value as $val) {} count($value); }_1Namun, 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); }_2Antarmuka 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); }_3Dalam 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); }_4Meneruskan 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); }_5Alih-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); }_6Konversi 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); }_7Pemberitahuan 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