ΠΠΎΡΠ»Π΅ Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ PHP 8.4. ΠΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΡΠΈΡ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΡΡΡΠ°ΡΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² PHP 8.4:
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π½Π° Π±Π°Π·Π΅ IR Framework. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ°ΡΡΠΉ JIT Π½Π°ΠΏΡΡΠΌΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π½ΡΡ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ² Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ x86_64 ΠΈ AArch64, Π° Π½ΠΎΠ²ΡΠΉ JIT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Π±ΡΠΊΠ΅Π½Π΄ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (IR), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ²ΠΎΠΉΡΡΠ² (property hook), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ±ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ __get ΠΈ __set, ΠΈ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²-ΠΎΠ±Π²ΡΠ·ΠΎΠΊ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ²ΠΎΠΉΡΡΠ² Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΡΠΌ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError(«Name must be non-empty»); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ «new» Π±Π΅Π· ΠΎΡΠ΄Π΅Π»ΡΡΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ, Ρ.Π΅. Π²ΠΌΠ΅ΡΡΠΎ «$name = (new MyClass())->method()» ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ «$name = new MyClass()->method()».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (public, private, protected), ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°ΠΏΠΈΡΠΈ (set) ΠΈ ΡΡΠ΅Π½ΠΈΡ (get). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: class PhpVersion { public private(set) string $version = ‘8.4’; } $phpVersion = new PhpVersion(); var_dump($phpVersion->version); // string(3) «8.4» $phpVersion->version = ‘PHP 8.3’; // error
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° ΡΡΠ°ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° «Π»Π΅Π½ΠΈΠ²ΡΡ » ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (lazy), ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° «opcache.jit_buffer_size» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±ΡΡΠ΅ΡΠ° JIT ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ «opcache.jit» ΠΈ «opcache.jit_buffer_size». ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ JIT ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ «opcache.jit=disable» Π²ΠΌΠ΅ΡΡΠΎ «opcache.jit_buffer_size=0». ΠΠ½Π΅ΡΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ½ΠΈΠΆΠ°ΡΡΠΈΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ JIT Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ «#[\Deprecated]», ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². #[\Deprecated(«use newFunction() instead», since: «1.1»)] function oldFunction() { // … }
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ»Π°ΡΡ \Dom\HTMLDocument, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ HTML5.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ request_parse_body() Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΡΠΈΠΏΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° multipart/form-data (RFC1867).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ array_find(), array_find_key(), array_any() ΠΈ array_all(). Π€ΡΠ½ΠΊΡΠΈΠΈ array_find() ΠΈ array_find_key() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π·Π°Π΄Π°Π½Π½Π°Ρ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ callback-ΡΡΠ½ΠΊΡΠΈΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠ½ΠΊΡΠΈΠΈ array_any() ΠΈ array_all() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΠΏΠ°Π²ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π²ΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ title Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ΅ 5 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ: $firstMatch = array_find( $posts, function (Post $post) { return strlen($post->title) > 5; } );
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ DateTime::getMicrosecond() ΠΈ DateTimeImmutable::setMicrosecond($microsecond) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ DateTime::createFromTimestamp().
- Π PDO (PHP Data Objects), Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² SQL ΠΈ ΡΡΠ±ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π‘Π£ΠΠ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ±ΠΊΠ»Π°ΡΡΡ Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc ΠΈ Pdo\Sqlite.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst(), bcceil(), bcdivmod(), bcfloor() ΠΈ bcround(), pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid(), http_get_last_response_headers(), http_clear_last_response_headers(), fpow()
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ exit ΠΈ die ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΡΠΎΡΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π°Π½Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ exit() ΠΈ die() Π±ΡΠ»ΠΈ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π°Π΄ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ exit ΠΈ die.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠ»ΠΎΠΆΠ½ΡΡΡΠΈΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π±ΡΡΠ΅ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΠ»ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΡΠ½ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ tempnam().
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ null Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π»ΠΎΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ null. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ null ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° «?». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ «function save(Book $book = null) {}» ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ «function save(?Book $book = null) {}».
- ΠΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ E_STRICT, MYSQLI_REFRESH_*, ΡΡΠ½ΠΊΡΠΈΠΈ mysqli_ping(), mysqli_kill(), mysqli_refresh(), ΠΌΠ΅ΡΠΎΠ΄Ρ mysqli::ping(), mysqli::kill(), mysqli::refresh(), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ «_» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° DOMDocument ΠΈ DOMEntity. ΠΠ°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ° GMP, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ «final».
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π²ΡΠΏΡΡΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PHPStan 2.0, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½Π° ΡΠ·ΡΠΊΠ΅ PHP Π±Π΅Π· Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ unit-ΡΠ΅ΡΡΠΎΠ². ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 10 ΡΡΠΎΠ²Π½Π΅ΠΉ, ΠΎΡ
Π²Π°ΡΡΠ²Π°ΡΡΠΈΡ
ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠ°ΠΊ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²; ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ; ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΠΏΠΎΠ²; ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ PHP ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru