Tag Alat
Tag Alat
Lebih pintar, lebih pantas, dibina untuk masa depan.
PHP 8.5 adalah kemas kini utama bagi bahasa PHP, Dengan ciri baru termasuk sambungan URI, operator Pipe, dan sokongan untuk mengubah sifat semasa menyalin.
Tingkatkan ke PHP 8.5 sekarang!Sambungan URI
Sambungan URI baru yang sentiasa tersedia menyediakan API untuk menganalisis dan mengubah URI dan URL dengan selamat mengikut piawaian RFC 3986 dan WHATWG URL.
Dikuasakan oleh perpustakaan uriparser (RFC 3986) dan Lexbor (WHATWG URL).
Ketahui lebih lanjut mengenai latar belakang ciri ini di blog PHP Foundation.
var_dump ( $components [ 'host' ]);
// string(7) "php.net"
$uri = new Uri ( 'https://php.net/releases/8.5/en.php' );
var_dump ( $uri -> getHost ());
// string(7) "php.net"
Operator Paip
Operator paip membolehkan panggilan fungsi disambungkan tanpa mengurus pemboleh ubah perantaraan. Ini membolehkan banyak "panggilan bersarang" digantikan dengan rantaian yang boleh dibaca ke hadapan.
Ketahui lebih lanjut mengenai latar belakang ciri ini di blog PHP Foundation.
$slug = strtolower (
str_replace ( '.' , '' ,
str_replace ( ' ' , '-' ,
trim ( $title )
)
)
);
var_dump ( $slug );
// string(15) "php-85-released"
$slug = $title
|> trim (...)
|> (fn( $str ) => str_replace ( ' ' , '-' , $str ))
|> (fn( $str ) => str_replace ( '.' , '' , $str ))
|> strtolower (...);
var_dump ( $slug );
// string(15) "php-85-released"
Klon Dengan Sifat
Sekarang boleh mengemas kini sifat semasa penyalinan objek dengan menghantar array berasosiasi ke fungsi clone(). Ini menyokong corak "with-er" untuk kelas baca sahaja dengan mudah.
{
public function __construct (
public int $red ,
public int $green ,
public int $blue ,
public int $alpha = 255 ,
) {}
public function withAlpha ( int $alpha ): self
{
$values = get_object_vars ( $this );
$values [ 'alpha' ] = $alpha
; return new self (... $values );
}
}
$blue = new Color ( 79 , 91 , 147 );
$transparentBlue = $blue -> withAlpha ( 128 );
{
public function __construct (
public int $red ,
public int $green ,
public int $blue ,
public int $alpha = 255 ,
) {}
public function withAlpha ( int $alpha ): self
{
return clone( $this , [
'alpha' => $alpha ,
]);
}
}
$blue = new Color ( 79 , 91 , 147 );
$transparentBlue = $blue -> withAlpha ( 128 );
#[\NoDiscard] Atribut
Dengan menambahkan atribut #[\NoDiscard] ke fungsi, PHP akan memeriksa apakah nilai yang dikembalikan digunakan dan memberikan peringatan jika tidak. Ini meningkatkan keamanan API di mana nilai yang dikembalikan penting tetapi mudah lupa digunakan secara tidak sengaja.
Cast (void) yang terkait dapat digunakan untuk menunjukkan bahwa suatu nilai sengaja tidak digunakan.
{
return 'PHP 8.4' ;
}
getPhpVersion (); // No warning
function getPhpVersion (): string
{
return 'PHP 8.5' ;
}
getPhpVersion ();
// Warning: The return value of function getPhpVersion() should
// either be used or intentionally ignored by casting it as (void)
Closures dan First-Class Callables dalam Ekspresi Konstanta
Closure statik dan first-class callable sekarang dapat digunakan dalam ekspresi konstanta. Ini termasuk parameter atribut, nilai default properti dan parameter, serta konstanta.
{
#[ AccessControl (
new Expression ( 'request.user === post.getAuthor()' ),
)]
public function update (
Request $request ,
Post $post ,
): Response {
// ...
}
}
{
#[ AccessControl (static function (
Request $request ,
Post $post ,
): bool {
return $request -> user === $post -> getAuthor ();
})]
public function update (
Request $request ,
Post $post ,
): Response {
// ...
}
}
Pegangan Bersama cURL Persisten
Berbeza dengan curl_share_init(), pegangan yang dibuat oleh curl_share_init_persistent() tidak akan dimusnahkan pada akhir permintaan PHP. Jika pegangan persisten dengan set pilihan yang sama dijumpai, ia akan digunakan semula, mengelakkan kos inisialisasi pegangan cURL setiap kali.
curl_share_setopt ( $sh , CURLSHOPT_SHARE , CURL_LOCK_DATA_DNS );
curl_share_setopt ( $sh , CURLSHOPT_SHARE , CURL_LOCK_DATA_CONNECT );
$ch = curl_init ( 'https://php.net/' );
curl_setopt ( $ch , CURLOPT_SHARE , $sh );
curl_exec ( $ch );
CURL_LOCK_DATA_DNS ,
CURL_LOCK_DATA_CONNECT ,
]);
$ch = curl_init ( 'https://php.net/' );
curl_setopt ( $ch , CURLOPT_SHARE , $sh );
// This may now reuse the connection from an earlier SAPI request
curl_exec ( $ch );
Fungsi array_first() dan array_last()
Fungsi array_first() dan array_last() mengembalikan nilai pertama atau terakhir dalam array masing-masing. Jika array kosong, null dikembalikan (memudahkan penggunaan dengan operator ??)。
? null
: $events [ array_key_last ( $events )];
Ciri dan peningkatan tambahan
- Ralat Kritikal (seperti masa pelaksanaan maksimum terlampau) kini termasuk backtrace.
- Atribut kini boleh menyasarkan konstanta.
- Atribut #[\Override] kini boleh digunakan pada sifat.
- Atribut #[\Deprecated] boleh digunakan pada traits dan konstanta.
- Sifat statik kini menyokong keterlihatan tak simetri.
- Sifat boleh ditandakan sebagai final menggunakan promosi sifat konstruktor.
- Kaedah Closure::getCurrent() ditambah untuk memudahkan rekursi dalam fungsi tanpa nama.
- Fungsi setcookie() dan setrawcookie() kini menyokong kunci "partitioned".
- Fungsi baru get_error_handler() dan get_exception_handler() tersedia.
- Kaedah baru Dom\Element::getElementsByClassName() dan Dom\Element::insertAdjacentHTML() tersedia.
- Fungsi grapheme_levenshtein() ditambah.
- Atribut baru #[\DelayedTargetValidation] boleh digunakan untuk menahan ralat masa kompilasi daripada atribut teras dan sambungan yang digunakan pada sasaran tidak sah.
Penamatan dan pemecahan keserasian ke belakang
- Operator backtick sebagai alias untuk shell_exec() telah tidak digalakkan.
- Nama cast bukan kanonik (boolean), (integer), (double), dan (binary) telah tidak digalakkan. Gunakan (bool), (int), (float), dan (string) sebagai gantinya.
- Tetapan INI disable_classes telah dikeluarkan kerana ia menyebabkan beberapa andaian enjin menjadi rosak.
- Menamatkan pernyataan case dengan titik koma bukannya kolon telah tidak digalakkan.
- Menggunakan null sebagai offset array atau semasa memanggil array_key_exists() kini tidak digalakkan. Gunakan string kosong sebaliknya.
- Tidak lagi boleh menggunakan "array" dan "callable" sebagai nama alias kelas dalam class_alias().
- Kaedah magik __sleep() dan __wakeup() telah ditandakan sebagai tidak digalakkan secara lembut. Gunakan __serialize() dan __unserialize() sebagai gantinya.
- Amaran kini diberikan apabila menukar NAN ke jenis lain.
- Memecahkan nilai bukan array (selain null) menggunakan [] atau list() kini mengeluarkan amaran.
- Amaran kini diberikan apabila menukar float (atau string yang kelihatan seperti float) ke int jika tidak boleh diwakili sebagai int.
Untuk muat turun sumber Php 8.5 sila lawati muat turun halaman. Binari Windows boleh didapati di PHP untuk Windows Tapak. Senarai perubahan dicatatkan di Changelog.
The Panduan Migrasi boleh didapati dalam manual PHP. Sila rujuk untuk senarai terperinci ciri-ciri baru dan perubahan yang tidak serasi.



