国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Lagi ChangeLog Lagi ChangeLog

Php 8.4 adalah kemas kini utama bahasa PHP.

Ia mengandungi banyak ciri baru, seperti cangkuk harta, penglihatan asimetrik, API DOM yang dikemas kini, penambahbaikan prestasi, pembetulan pepijat, dan pembersihan umum.

Naik taraf ke Php 8.4 sekarang!

Cangkuk harta

PHP < 8.4
class Locale {
private string $languageCode;
private string $countryCode;

public function __construct ( string $languageCode, string $countryCode )
{
$this->setLanguageCode($languageCode);
$this->setCountryCode($countryCode);
}

public function getLanguageCode(): string {
return $this->languageCode;
}

public function setLanguageCode( string $languageCode ): void {
$this->languageCode = $languageCode;
}

public function getCountryCode(): string {
return $this->countryCode;
}

public function setCountryCode( string $countryCode ): void {
$this->countryCode = strtoupper($countryCode);
}

public function setCombinedCode( string $combinedCode ): void {
[ $languageCode, $countryCode ] = explode( '_', $combinedCode, 2 );
$this->setLanguageCode($languageCode);
$this->setCountryCode($countryCode);
}

public function getCombinedCode(): string {
return \sprintf( "%s_%s", $this->languageCode, $this->countryCode );
}
}

$brazilianPortuguese = new Locale( 'pt', 'br' );

var_dump( $brazilianPortuguese->getCountryCode() ); // BR

var_dump( $brazilianPortuguese->getCombinedCode() ); // pt_BR
PHP 8.4
class Locale {
public string $languageCode;

public string $countryCode {
set ( string $countryCode ) {
$this->countryCode = strtoupper($countryCode);
}
}

public string $combinedCode {
get => \sprintf( "%s_%s", $this->languageCode, $this->countryCode );
set ( string $value ) {
[ $this->languageCode, $this->countryCode ] = explode( '_', $value, 2 );
}
}

public function __construct( string $languageCode, string $countryCode ) {
$this->languageCode = $languageCode;
$this->countryCode = $countryCode;
}
}

$brazilianPortuguese = new Locale( 'pt', 'br' );

var_dump( $brazilianPortuguese->countryCode ); // BR

var_dump( $brazilianPortuguese->combinedCode ); // pt_BR

Cangkuk harta memberikan sokongan untuk sifat -sifat yang dikira yang dapat difahami secara asli oleh IDE dan alat analisis statik, tanpa perlu menulis komen docBlock yang mungkin keluar dari segerakkan. Selain itu, mereka membenarkan pra-pemprosesan nilai yang boleh dipercayai, tanpa perlu memeriksa sama ada getter atau setter yang sepadan ada di dalam kelas.

Penglihatan asimetrik

PHP < 8.4
class PhpVersion {
private string $version = '8.3' ;

public function getVersion(): string {
return $this->version;
}

public function increment(): void {
[ $major, $minor ] = explode( '.', $this->version );
$minor++;
$this->version = "{$major}.{$minor}" ;
}
}
PHP 8.4
class PhpVersion {
public private(set) string $version = '8.4' ;

public function increment(): void {
[ $major, $minor ] = explode( '.', $this->version );
$minor++;
$this->version = "{$major}.{$minor}" ;
}
}

Skop untuk menulis kepada harta kini boleh dikawal secara bebas dari skop untuk membaca harta itu, mengurangkan keperluan untuk kaedah getter boilerplate untuk mendedahkan nilai harta tanpa membenarkan pengubahsuaian dari luar kelas.

#[\Deprecated] Atribut

PHP < 8.4
class PhpVersion {
/**
* @deprecated 8.3 use PhpVersion::getVersion() instead
*/
public function getPhpVersion(): string {
return $this->getVersion();
}

public function getVersion(): string {
return '8.3';
}
}

$phpVersion = new PhpVersion();
// No indication that the method is deprecated.
echo $phpVersion->getPhpVersion();
PHP 8.4
class PhpVersion {
#[\Deprecated(
message: "use PhpVersion::getVersion() instead",
since: "8.4",
)]
public function getPhpVersion(): string {
return $this->getVersion();
}

public function getVersion(): string {
return '8.4';
}
}

$phpVersion = new PhpVersion();
// Deprecated: Method PhpVersion::getPhpVersion() is deprecated since 8.4, use PhpVersion::getVersion() instead
echo $phpVersion->getPhpVersion();

The new #[Deprecated] attribute makes PHP’s existing deprecation mechanism available to user-defined functions, methods, and class constants.

Ciri-ciri Ext-Dom Baru dan Sokongan HTML5

PHP < 8.4
$dom = new DOMDocument();
$dom->loadHTML(
<<<'HTML'
<main>
<article>PHP 8.4 is a feature-rich release!</article>
<article class="featured">PHP 8.4 adds new DOM classes that are spec-compliant, keeping the old ones for compatibility.</article>
</main>
HTML,
LIBXML_NOERROR,
);

$xpath = new DOMXPath($dom);

$node = $xpath->query('.//main/article[not(following-sibling::*)]')[0];

$classes = explode(" ", $node->className); // Simplified

var_dump(in_array("featured", $classes)); // bool(true)
PHP 8.4
$dom = Dom\HTMLDocument::createFromString(
<<<'HTML'
<main>
<article>PHP 8.4 is a feature-rich release!</article>
<article class="featured">PHP 8.4 adds new DOM classes that are spec-compliant, keeping the old ones for compatibility.</article>
</main>
HTML,
LIBXML_NOERROR,
);

$node = $dom->querySelector('main > article:last-child');
var_dump($node->classList->contains("featured")); // bool(true)

API DOM baru yang merangkumi sokongan patuh piawaian untuk menghuraikan dokumen HTML5, membetulkan beberapa pepijat pematuhan lama dalam tingkah laku fungsi DOM, dan menambah beberapa fungsi untuk membuat kerja dengan dokumen lebih mudah.

API DOM baru boleh didapati dalam ruang nama DOM. Dokumen yang menggunakan API DOM baru boleh dibuat menggunakan kelas domhtmldocument dan domxmldocument.

API OBJEK UNTUK BCMATH

PHP < 8.4
$num1 = '0.12345';
$num2 = '2';
$result = bcadd($num1, $num2, 5);

echo $result; // '2.12345'
var_dump(bccomp($num1, $num2) > 0); // false
PHP 8.4
use BcMath\Number;

$num1 = new Number('0.12345');
$num2 = new Number('2');
$result = $num1 + $num2;

echo $result; // '2.12345'
var_dump($num1 > $num2); // false

Objek BCMathNumber baru membolehkan penggunaan objek berorientasikan objek dan pengendali matematik standard apabila bekerja dengan nombor ketepatan sewenang-wenangnya.

Objek -objek ini tidak berubah dan melaksanakan antara muka yang boleh dibina, jadi ia boleh digunakan dalam konteks rentetan seperti echo $ num.

New array_*() functions

PHP < 8.4
$animal = null;
foreach ( [ 'dog', 'cat', 'cow', 'duck', 'goose' ] as $value ) {
if ( str_starts_with($value, 'c') ) {
$animal = $value;
break;
}
}

var_dump($animal); // string(3) "cat"
PHP 8.4
$animal = array_find(
[ 'dog', 'cat', 'cow', 'duck', 'goose' ],
static fn (string $value): bool => str_starts_with($value, 'c'),
);

var_dump($animal); // string(3) "cat"

Fungsi baru array_find (), array_find_key (), array_any (), dan array_all () tersedia.

Subkelas spesifik pemacu PDO

PHP < 8.4
$connection = new PDO(
'sqlite:foo.db',
$username,
$password,
); // object(PDO)

$connection->sqliteCreateFunction(
'prepend_php',
static fn ($string) => "PHP {$string}",
);

$connection->query('SELECT prepend_php(version) FROM php');
PHP 8.4
$connection = PDO::connect(
'sqlite:foo.db',
$username,
$password,
); // object(Pdo\Sqlite)

$connection->createFunction(
'prepend_php',
static fn ($string) => "PHP {$string}",
); // Does not exist on a mismatching driver.

$connection->query('SELECT prepend_php(version) FROM php');

Subkelas baru PDODBLIB, PDOFIREBIRD, PDOMYSQL, PDOODBC, PDOPGSQL, dan PDOSQLITE PDO boleh didapati.

new MyClass()->method()tanpa kurungan

PHP < 8.4
class PhpVersion {
public function getVersion(): string {
return 'PHP 8.4';
}
}

var_dump(( new PhpVersion())->getVersion());
PHP 8.4
class PhpVersion {
public function getVersion(): string {
return 'PHP 8.4';
}
}

var_dump(new PhpVersion()->getVersion());

Sifat dan kaedah objek yang baru diterapkan kini boleh diakses tanpa membungkus ungkapan baru dalam kurungan.

Kelas, Antara Muka dan Fungsi Baharu

  • Objek malas baru.
  • Pelaksanaan JIT baru berdasarkan rangka kerja IR.
  • Fungsi Request_Parse_body () baru.
  • New bcceil(),>bcdivmod(),bcfloor(), and bcround() functions.
  • New RoundingMode enum for round() with 4 new rounding modes TowardsZero,AwayFromZero, NegativeInfinity,and PositiveInfinity.
  • DateTime baru :: createFromTimeStamp (), datetime :: getMicRoSecond (), datetime :: setMicRoSecond (), datetimeImmutable :: createFromTimeStamp (), DateTimeImmutable :: getMicrosecond ()
  • Baru mb_trim (), mb_ltrim (), mb_rtrim (), mb_ucfirst (), dan mb_lcfirst () fungsi.
  • Baru pcntl_getcpu (), pcntl_getcuaffinity (), pcntl_getqos_class (), pcntl_setns (), dan pcntl_waitid ().
  • ReflectionClassConstant :: isDEprecated (), reflectionGenerator :: isclosed (), dan reflectionProperty :: isdynamic () kaedah.
  • Baru http_get_last_response_headers (), http_clear_last_response_headers (), dan fpow () fungsi.
  • XmlReader baru :: dariStream (), xmlReader :: fromuri (), xmlReader :: fromString (), xmlWriter :: tostream (), xmlwriter :: touri (), dan xmlwriter :: tomemory () kaedah.
  • Fungsi grapheme_str_split () baru.

Penamatan dan pemecahan keserasian ke belakang

  • IMAP, OCI8, PDO_OCI, and pspell extensions have been unbundled and moved to PECL.
  • Jenis parameter yang tidak dapat dibatalkan secara tersirat kini telah ditutup.
  • Menggunakan _ sebagai nama kelas kini ditolak.
  • Meningkatkan sifar kepada kuasa nombor negatif kini telah ditutup.
  • Melewati mod tidak sah ke bulat () melemparkan ValueError.
  • Pemalar kelas dari Tarikh Sambungan, INTL, PDO, Refleksi, SPL, SQLite, XMLReader diketik sekarang.
  • Kelas GMP kini muktamad.
  • Mysqli_set_charset_dir, mysqli_stmt_attr_prefetch_rows, mysqli_cursor_type_for_update, mysqli_cursor_type_scrollable, dan mysqli_type_interval telah dibuang.
  • mysqli_ping (), mysqli_kill (), mysqli_refresh () fungsi, mysqli :: ping (), mysqli :: Kill (), mysqli :: refresh () kaedah, dan mysqli_refresh_* pemalar telah diturunkan.
  • stream_bucket_make_writeable () dan stream_bucket_new () Sekarang kembalikan contoh streambucket dan bukannya stdclass.
  • Keluar () Perubahan Kelakuan.
  • Pemalar E_Strict telah ditutup.
Prestasi yang lebih baik, sintaks yang lebih baik, keselamatan jenis yang lebih baik. Naik taraf ke Php 8.4 sekarang!

Untuk muat turun sumber Php 8.4 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.