PHP Digest
Open in Telegram
PHP ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ ΠΠΎΠ²ΠΎΡΡΠΈ, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΌΠΈΡΠ° PHP β ΡΠ°Π· Π² ΠΌΠ΅ΡΡΡ. ΠΠΎΠΏΡΠΎΡΡ, Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ: @pronskiy
Show more8 208
Subscribers
-324 hours
-87 days
-3930 days
Posts Archive
8 207
ΠΡΠ΄ΡΡΠ΅Π΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ PHP
https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
ΠΠΈΠΊΠΈΡΠ° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊ RFC Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊ Π½ΠΎΠ²ΡΡ
Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΈΠ»ΠΈ Π»ΠΎΠΌΠ°ΡΡΠΈΡ
ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΈΡ. Π ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
1. ΠΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ (P++)
ΠΡΠΈ Π²ΡΠ΅Ρ
ΡΠ²ΠΎΠΈΡ
Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ
, ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ±ΡΠ°ΡΡ
$ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΠΎ ΠΌΡ ΠΏΠΎΠΌΠ½ΠΈΠΌ ΡΡΠ΄ΡΠ±Ρ Perl/Raku.
2. Editions (ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈ/ΠΈΠ·Π΄Π°Π½ΠΈΡ)
ΠΠ΄Π΅Ρ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π° ΠΈΠ· Rust, Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΠΈΠΊΠΈΡΠ° ΡΠΎΠΆΠ΅ Π²ΠΎΠ²Π»Π΅ΡΡΠ½.
ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ-Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ
ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ Ρ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΠΊ ΠΈ Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ.
3. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ declare Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠΈΡΡ
Π’ΠΎ Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΊΡΡΠΏΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΠΎ ΡΠΈΠΏΡ strict_types.
___
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠΈΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠΆΠ΅ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΡΠΌΠ΅Π»ΠΈ ΠΈΠ΄Π΅Ρ, ΡΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΠΈΠΊΠΈΡΠ° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΅Π΄ΠΈΠ½ΡΠΎΠ²/Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
ΠΠ°ΡΠΈΠ°Π½ΡΡ ΡΡΡ ΡΠ°ΠΊΠΈΠ΅:
β’ Π’Π΅ΠΊΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅
declare(strict_types=1) ΠΈΠ»ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π΅Π΄ΠΈΡΠ½ΠΎΠ² declare(edition=2020)
β’ ΠΠΎΠ²ΡΠΉ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΅Π΄ΠΈΡΠ½ΠΎΠ²: <?php2020
β’ Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Π΄Π»Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΡΠ½ (RFC)
namespace_declare('Vendor\Lib', [
'strict_types' => 1,
'no_dynamic_properties' => 1,
// ...
]);
β’ ΠΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² PHP
ΠΡΠΎΡΠΎΡΠΈΠΏ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΎΡΠΎΡΠΌΠ»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°.
ΠΠ°ΠΊΠ΅Ρ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
<?php package "nikic/php-parser"; namespace PhpParser\Node;β’ Π§ΡΠΎ-ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ»
.package.php Π² ΠΊΠΎΡΠ½Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½ΡΠΆΠ½ΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΠΈΠΊΠΈΡΠ° ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ Π΅Π΄ΠΈΡΠ½Ρ + declare Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 173
PHPUnit 9 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ, 3 ΡΠ²Π΅ΠΆΠΈΡ
RFC ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· PHP Internals, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/487690/
8 207
PhpStorm 2020.1 EAP
https://blog.jetbrains.com/phpstorm/2020/01/phpstorm-2020-1-early-access-program-is-now-open/
Upd: ΠΠΎΠΏΡΠ°Π²ΠΈΠ» ΡΡΡΠ»ΠΊΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π½Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΌΠ°ΠΆΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° PhpStorm.
ΠΡΠ΄Π΅ΠΌ ΡΠ»ΡΡΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ² Π² PHP, VCS ΠΈ ΠΏΡΠΎΡΠ΅Π΅. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΏΠΎΡΡΠΈΡΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Twitter phpstorm ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠΉ Π΄ΠΎΠ±ΡΡΠΉ RSS Π±Π»ΠΎΠ³Π°.
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΎΠ± ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΡ
Π΄Π»Ρ Composer β ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ composer.json. ΠΡΡΡ Π°Π²ΡΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, Π·Π°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠ΅Π΅.
+ PCOV ΠΈ PHPDBG Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΏΠΎΠΊΡΡΡΠΈΡ, ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π³ΠΎΠ² Twig, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠ»ΡΡ ΡΠ΅ΠΌΡ, ΡΡΠΈΡΡ JetBrains Mono ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ°ΡΠΊΠ° ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Git, Π½ΠΎ ΠΎ Π½ΠΈΡ
ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ EAP Π±ΠΈΠ»Π΄Ρ Π²ΡΡ
ΠΎΠ΄ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΈ ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
8 207
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π² PHP
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΠ°ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΠΈΠΊΠΈΡΠ° ΠΠΎΠΏΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Π΄ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². ΠΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ, ΡΠΎ, ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΠΈΠΊΠΈΡΡ, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΡΠ·Π½ΡΡ
ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΎΠ½ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π² PHP ΡΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ. ΠΡΡΡ PR Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ https://github.com/nikic/php-src/pull/3 ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΎΡΠΊΡΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π²ΠΎΡ ΡΡΡ https://github.com/PHPGenerics/php-generics-rfc/issues/45
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 172
PHP 7.4.2 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ, Stringable RFC, ΠΎΠ±Π·ΠΎΡ PHP 8, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², 4 Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ
ΠΌΠΈΡΠ°ΠΏΠ°, Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ, ΡΡΡΠΈΠΌΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/485592/
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 171
4 ΡΠ²Π΅ΠΆΠΈΡ
RFC ΠΈΠ· PHP Internals ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΡ Π² PHP 8, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ, ΡΡΡΠΈΠΌΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/483684/
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 170
CakePHP 4, Codeception 4, Phalcon 4 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ, Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ
ΠΌΠΈΡΠ°ΠΏΠΎΠ², ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/481564/
8 207
ΠΠΎΠΊΠ° Π΄Π΅Π»Π°Π» Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π° PHP 7.4 Ρ ΠΏΠΎΠΌΠΎΡΡΡ PhpStorm, ΠΠΈΠΊΠΈΡΠ° ΠΎΠ±ΡΠ°ΡΠΈΠ» ΠΌΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΡΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡΠΈΡΠ»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠ±Π΅Π½ΡΠΌΠ°ΡΠΊ. ΠΠ΅ Π²Π΅ΡΠΈΡΡ ΠΆΠ΅ ΠΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ»ΠΎΠ²ΠΎ?!
https://gist.github.com/pronskiy/492a0590d0fd3cfa0a02a2d7f908c494
Set typed public property: 1.408833026886s Set via setter (no type check): 3.0818917751312s Set private property via setter: 3.1216759681702s Set private property via magic: 20.88130402565sΠΡΠ»ΠΈ ΡΠ΅ΡΡΠ΅Ρ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΉ, ΡΠΎ Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π² Π½ΡΠΌ ΠΌΠ°Π»ΠΎ ΡΠΌΡΡΠ»Π°. ΠΠΎΡΡΠΎΠΌΡ Π² Π²ΠΈΠ΄Π΅ΠΎ Π΅ΡΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ²ΠΈΠΊ-ΡΠΈΠΊΡ Π΄Π»Ρ PhpStorm Ρ ΠΏΠΎΠΌΠΎΡΡΡ SSR, ΡΡΠΎΠ± Π·Π°ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΡΡΠ΅ΡΡ Π½Π° Π»Π΅ΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. β οΈ ΠΠ΅ΠΆΠ°ΡΡ ΠΈ Π²ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΡΠ΅ΡΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·-Π·Π° ΠΏΠ΅ΡΡΠΎΠΌΠ°Π½ΡΠ° ΡΠΌΡΡΠ»Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π² 99% ΡΠ»ΡΡΠ°Π΅Π².
8 207
ΠΡΠ»ΠΈ ΡΡΠΈΠΌ ΡΡΠ±Π±ΠΎΡΠ½ΠΈΠΌ ΡΡΡΠΎΠΌ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΡΡΠΎ Π±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΎ Π²ΠΎΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΌΠΈΡΠ°ΠΏΠ° Π² ΠΠ°Π·Π°Π½ΠΈ https://www.youtube.com/watch?v=zZTv7HMxKXI
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π°ΠΆ 6 Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ².
ΠΡΡΠ°ΡΠΈ, Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ Π½Π° Π΄Π΅ΠΊΠ°Π±ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡΠ° Π½Π΅ Π±ΡΠ»ΠΎ ΠΌΠΈΡΠ°ΠΏΠ° SymΠ‘ode Π² ΠΠΈΡΠ΅ΡΠ΅. ΠΠ½ ΠΏΡΠΎΠΉΠ΄ΡΡ 18 Π΄Π΅ΠΊΠ°Π±ΡΡ Π² ΠΎΡΠΈΡΠ΅ JetBrains https://www.meetup.com/ru-RU/symcode/events/267106695/
8 207
ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² PHP 7.4
https://github.com/DarkGhostHunter/Preloader
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠ΅Π΄Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΡΠΌ Π² Composer. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ, Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ.
ΠΠ»Ρ Symfony ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΆΠ΅ Π²ΡΠΊΠ°ΡΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈ https://symfony.com/blog/new-in-symfony-4-4-preloading-symfony-applications-in-php-7-4
ΠΠ»Ρ Laravel ΠΎΠ±Π΅ΡΠ°ΡΡ, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»ΠΈΠ°ΡΠΎΠ² ΠΏΠΎΠΊΠ° Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ? ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΡΠ»ΠΈ Π½Π΅ Π½Π°ΡΠ²ΡΡΠ΅ΡΡ Π½Π° segfault ΠΈ ΡΡΠ΄ Π΄ΡΡΠ³ΠΈΡ
Π½ΡΠ°Π½ΡΠΎΠ² (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ https://habr.com/ru/company/badoo/blog/472528/), ΡΠΎ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°ΡΡ ΠΏΡΠΈΡΠΎΡΡ. ΠΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π½Π΅ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅. Π Π²ΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠΎ?
ΠΠΎΡΠ²ΠΈΠ»ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ:
https://github.com/DarkGhostHunter/Preloader
ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠΊΡΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΏΠΎΡΠΎΠΌ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅ ΡΠΆΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ preloader.php ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΈΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² ΠΎΠΏΠΊΡΡ. ΠΠ²ΡΡΠΈΡ ΠΊΠ°ΠΊ Π³ΠΎΠ΄Π½Π°Ρ ΠΈΠ΄Π΅Ρ, Π½Π°Π΄ΠΎ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ.
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 169
PHP 7.4, PhpStorm 2019.3, InfectionPHP ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π²Π΅ΡΡΠΈΠΉ PHP, ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ FFI, Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ
ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΈ ΠΌΠΈΡΠ°ΠΏΠΎΠ², ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
https://habr.com/ru/post/479306/
8 207
ΠΡΡΠ΅Π» PhpStorm 2019.3
https://habr.com/ru/company/JetBrains/blog/478030/
ΠΡΠ»Π΅Π΄ Π·Π° ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ PHP 7.4, Π²ΡΠ΅ΡΠ° Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΠΌΠ°ΠΆΠΎΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· PhpStorm Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ ΡΠΆΠ΅ Π΄Π°ΠΆΠ΅ ΡΡΠΏΠ΅Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ. ΠΠΎ Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ Π²ΡΡ ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π³Π»ΡΠ½ΡΡΡ Π² ΠΊΠΎΡΠΎΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠ΅ (Π°Π½Π³Π»):
https://www.youtube.com/watch?v=h9KGsD87t_M (ΠΏΠΎΠΏΡΠ°Π²ΠΈΠ» ΡΡΡΠ»ΠΊΡ)
Π ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΠΏΡΡΠΌ Π²ΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π² Ρ
Π°Π±ΡΠ°ΠΏΠΎΡΡΠ΅.
8 207
PHP 7.4
ΠΡΡΠ»Π° Π² ΡΠ²Π΅Ρ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° PHP!
https://www.php.net/releases/7_4_0.php
Π‘ΡΠ΅Π΄ΠΈ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
β’ Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
β’ Π‘ΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
β’ ΠΡΠ΅Π΄Π·Π°Π³ΡΡΠ·ΠΊΠ°
β’ FFI
β’ Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ
β’ Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΡ
Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ²
β’ Π‘Π»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
β’ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² __toString()
ΠΡΡΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ https://www.php.net/manual/en/migration74.new-features.php
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: https://github.com/php/php-src/blob/php-7.4.0/UPGRADING
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 168
PHP 7.4 RC6, Symfony 5.0 ΠΈ 4.4, WordPress 5.3 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ, ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ PSR-ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², RFC ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· PHP Internals, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠΈΡΠ°ΠΏΡ, Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/477318/
8 207
Π§ΡΡΠ½Π°Ρ ΠΌΠ°Π³ΠΈΡ PHP
https://github.com/lisachenko/z-engine
ΠΠ°ΠΊ Π·Π°ΠΌΠΎΠΊΠ°ΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄? ΠΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ badoo/soft-mocks. Π ΠΊΠ°ΠΊ Π½Π°ΡΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅? ΠΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ° ΠΠΈΡΠ°ΡΠ΅Π½ΠΊΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π PHP 7.4 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ β FFI, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°ΡΡ ΡΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ (.dll or .so), ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π½ΠΈΡ
ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· C Π½Π° ΡΠΈΡΡΠΎΠΌ PHP.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Z-Engine ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ FFI, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ ΡΠ°ΠΌΠΎΠ³ΠΎ PHP! Z-Engine ΡΠΈΡΠ°Π΅Ρ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ PHP, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, zend_class_entry, zval, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ
Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅.
// Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ $refClass = new ReflectionClass(TestClass::class); $refClass->setAbstract(false); assertFalse($refClass->isAbstract()); $instance = new TestClass(); assertInstanceOf(TestClass::class, $instance);ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ! ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ PHP ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠ΅Π³ΡΠΎΠ»ΡΡ, ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ. Π’Π°ΠΊ ΡΡΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ².
8 207
C ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ 61 Π³ΠΎΠ»ΠΎΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ² 5 ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΡΠΎ. Π PHP 8.0 Π½Π°Ρ ΠΆΠ΄ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠ΅ ΡΠΈΠΏΡ.
8 207
[RFC] Weak maps
https://wiki.php.net/rfc/weak_maps
Π PHP 7.4 Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ»Π°Π±ΡΡ
ΡΡΡΠ»ΠΎΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ WeakReference.
Π Π°Π·Π²ΠΈΠ²Π°Ρ ΠΈΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅, Π΄Π»Ρ PHP 8 ΠΠΈΠΊΠΈΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ WeakMap, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΏΠΎ ΡΡΡΠΈ, Π±ΡΠ΄Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ SplObjectStorage, ΡΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ·ΡΠΌΠΈΠ½ΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΊΠ»ΡΡΠΎΠΌ, ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ (Π½Π° Π½Π΅Π³ΠΎ Π½Π΅Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΡΡΠ»ΠΎΠΊ), ΡΠΎ ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ ΠΈ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ WeakMap.
8 207
PHP-ΠΠ°ΠΉΠ΄ΠΆΠ΅ΡΡ β 167
PHP 7.4.0 RC5, Xdebug 2.8, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² PHP-FPM, Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ· PHP Internals, ΠΏΠΎΡΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ, ΡΡΡΠΈΠΌΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅!
https://habr.com/p/474380/
8 207
ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ·ΡΠΊ Perl?
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ»Π³ΠΈΡ
ΡΠΏΠΎΡΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Perl ΠΏΡΠΈΠ½ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Perl 6 Π² Raku.
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Perl 6 Π½Π΅ ΡΡΠ°Π» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Perl 5, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Ρ Perl 5. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Perl ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΡ
ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ·ΡΠΊΠ°, Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΠ²ΠΎΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΡΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡ Ρ P++, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΊ ΡΡΠ°ΡΡΡΡ, Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΠ»Π° ΡΠ»Π΅Π΄ Π»ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠΈΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΡΡΠ±ΠΎΠ»ΠΎΠΊ. ΠΠΎΠ½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΡΡΠ΄ΡΠ±Π° Perl/Raku.
8 207
Π‘Π²Π΅ΠΆΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΡΡ ΠΏΡΠΎ PHP
SDCast #109 Ρ ΠΠ½ΡΠΎΠ½ΠΎΠΌ Π’ΠΈΡΠΎΠ²ΡΠΌ, Π°Π²ΡΠΎΡΠΎΠΌ RoadRunner ΠΈ Cycle ORM.
https://sdcast.ksdaemon.ru/2019/10/sdcast-109/
The Undercover Elephpant Ρ Derick Rethans Π°Π²ΡΠΎΡΠΎΠΌ Xdebug ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π² PHP.
https://undercover-elephpant.com/episodes/what-is-garbage-collection-in-php-and-how-do-you-make-the-most-of-it-with-derick-rethans
Laravel Snippet β ΠΏΠΎΠ΄ΠΊΠ°ΡΡ Π’Π΅ΠΉΠ»ΠΎΡΠ°. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΡΠΏΠΈΠ·ΠΎΠ΄Π°Ρ
ΠΎΠ½ Π΄Π΅Π»ΠΈΡΡΡ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡ Π±ΠΈΠ·Π½Π΅Ρ Π½Π° ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ΅. ΠΡΠ»ΠΈ Π΅ΡΡ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ.
https://share.transistor.fm/s/bc9c3206
ΠΡΡΠΈΠΌΠΈΠ½ΡΡΠΊΠ° PHP: DDD #7 β ΠΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠΎΠ² ΠΏΠΎ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΡΠΈΠΊΠ° ΠΠ²Π°Π½ΡΠ° Domain-Drived Design.
https://5minphp.ru/episode71/
