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

Mehr ChangeLog Mehr ChangeLog

PHP 8.4 ist ein gro?es Update der PHP -Sprache.

Es enth?lt viele neue Funktionen, wie Eigenschaftenhaken, asymmetrische Sichtbarkeit, eine aktualisierte DOM -API, Leistungsverbesserungen, Fehlerbehebungen und allgemeine Bereinigung.

Upgrade auf PHP 8.4 jetzt!

Eigenschaftshaken

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

Eigenschaftshaken unterstützen berechnete Eigenschaften, die von IDES und statischen Analyse -Tools nativ verstanden werden k?nnen, ohne Docblock -Kommentare zu schreiben, die m?glicherweise nicht synchronisiert werden. Darüber hinaus erm?glichen sie eine zuverl?ssige Vor- oder Nachbearbeitung von Werten, ohne zu prüfen, ob in der Klasse ein übereinstimmender Getter oder Setter vorhanden ist.

Asymmetrische Sichtbarkeit

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}" ;
}
}

Der Umfang, um in eine Eigenschaft zu schreiben, kann nun unabh?ngig vom Bereich zum Lesen der Eigenschaft gesteuert werden, um die Notwendigkeit von Kesselplatten -Getter -Methoden zu verringern, um den Wert einer Eigenschaft freizulegen, ohne ?nderungen von au?en einer Klasse zu erm?glichen.

#[\Deprecated] Attribut

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.

Neue Ext-DOM-Funktionen und HTML5-Unterstützung

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)

Neue DOM-API, die Standards-konforme Unterstützung für das Parsen von HTML5-Dokumenten enth?lt, mehrere langj?hrige Compliance-Fehler im Verhalten der DOM-Funktionalit?t festlegt und mehrere Funktionen hinzugefügt werden, um die Arbeit mit Dokumenten bequemer zu gestalten.

Die neue DOM -API ist im Dom -Namespace verfügbar. Dokumente, die die neue DOM -API verwenden, k?nnen mit den Klassen DOMHTMLDOCUMENT und DOMXMLDOCUMENT erstellt werden.

Objekt -API für 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

Das neue BCMATHNumber-Objekt erm?glicht die objektorientierte Verwendung und Standardmathematikoperatoren bei der Arbeit mit willkürlichen Pr?zisionsnummern.

Diese Objekte sind unver?nderlich und implementieren die String -Schnittstelle, sodass sie in String -Kontexten wie Echo $ num verwendet werden k?nnen.

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"

Neue Funktionen array_find (), array_find_key (), array_any () und array_all () sind verfügbar.

PDO -Treiberspezifische Unterklassen

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');

Neue Unterklassen Pdodblib, Pdofirebird, Pdomysql, Pdoodbc, Pdopgsql und Pdosqlite von PDO sind verfügbar.

new MyClass()->method()ohne Klammern

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());

Eigenschaften und Methoden eines neu instanziierten Objekts k?nnen jetzt zugegriffen werden, ohne den neuen Ausdruck in Klammern zu wickeln.

Neue Klassen, Schnittstellen und Funktionen

  • Neue faule Objekte.
  • Neue JIT -Implementierung basierend auf dem IR -Framework.
  • Neue Request_Parse_body () Funktion.
  • New bcceil(),>bcdivmod(),bcfloor(), and bcround() functions.
  • New RoundingMode enum for round() with 4 new rounding modes TowardsZero,AwayFromZero, NegativeInfinity,and PositiveInfinity.
  • Neue DateTime :: CreateFromTimestAMP (), DateTime :: getMicrosecond (), datetime :: setMicrosecond (), datetimeimmable:
  • Neue MB_TRIM (), MB_LTRIM (), MB_RTRIM (), MB_UCFIRST () und MB_LCFIRST ().
  • Neue Funktionen von pcntl_getCpu (), pcntl_getCpuaffinity (), PCNTL_Getqos_class (), PCNTL_Setns () und PCNTL_WAITID ().
  • Neue ReflectionClassConstant :: isdeprecated (), ReflectionGenerator :: iscLosed () und ReflectionProperty :: IsDynamic () Methoden.
  • Neue http_get_last_response_headers (), http_clear_last_response_Headers () und fpow () Funktionen.
  • NEU XMLREADER :: Fromstream (), Xmlreader :: Fromuri (), Xmlreader :: Fromstring (), Xmlwriter :: ToStream (), Xmlwriter :: touri () und xmlwriter :: tomemory () Methoden.
  • Neue Graphem_str_split () Funktion.

Abwertungen und Abw?rtskompatibilit?tsunterbrechungen

  • IMAP, OCI8, PDO_OCI, and pspell extensions have been unbundled and moved to PECL.
  • Implizit nullable Parametertypen sind jetzt veraltet.
  • Die Verwendung von _ als Klassenname ist jetzt veraltet.
  • Das Aufheben von Null auf die Leistung einer negativen Zahl ist jetzt veraltet.
  • Wenn Sie den ungültigen Modus an rund () übergeben, wird ValueError ausgel?st.
  • Klassenkonstanten aus Erweiterungsdatum, INTL, PDO, Reflexion, SPL, SQLite, XMLReader werden jetzt tippt.
  • Die GMP -Klasse ist jetzt endgültig.
  • Mysqli_set_charset_dir, mysqli_stmt_attr_prefetch_rows, mysqli_cursor_type_for_update, mysqli_cursor_type_scrollierbar und mysqli_type_interval konstants removed.
  • MySQLI_Ping (), mySQLI_Kill (), mySQLI_Refresh () Funktionen, mysqli :: ping (), mysqli :: Kill (), Mysqli :: Refresh () Methoden und Mysqli_Refresh_* konstanten wurden depressiviert.
  • stream_bucket_make_writable () und stream_bucket_new () geben nun eine Instanz von StreamBucket anstelle von STDClass zurück.
  • Exit () Verhaltens?nderung.
  • E_strict Constant wurde veraltet.
Bessere Leistung, bessere Syntax, verbesserte Typsicherheit. Upgrade auf PHP 8.4 jetzt!

Für Quellen -Downloads von PHP 8.4 besuchen Sie bitte die Downloads Seite. Windows -Bin?rdateien finden Sie auf der PHP für Windows Website. Die Liste der ?nderungen wird in der aufgezeichnet Changelog.

Der Migrationsleitfaden ist im PHP -Handbuch erh?ltlich. Bitte wenden Sie sich an eine detaillierte Liste neuer Funktionen und rückw?rtskompatible ?nderungen.