Megkezdődött a PHP 8.2 alfa tesztelése

Bemutatták a PHP 8.2 programozási nyelv új ágának első alfa kiadását. A megjelenést november 24-re tervezik. A PHP 8.2-ben már tesztelhető vagy bevezetésre tervezett főbb újítások:

  • Добавлены отдельные типы «false» и «null», которые могут использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Hozzáadtuk az osztály írásvédettként való megjelölésének lehetőségét. Az ilyen osztályokban a tulajdonságok csak egyszer állíthatók be, ezután már nem módosíthatók. Korábban az egyes osztálytulajdonságokat csak olvashatóként lehetett megjelölni, de most már engedélyezheti ezt a módot az összes osztálytulajdonságra egyszerre. A "csak olvasható" jelző osztályszinten történő megadása azt is megakadályozza, hogy a tulajdonságok dinamikusan kerüljenek az osztályba. readonly class Post { public function __construct( public string $cím, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'rossz'; // Hiba: Nem lehet dinamikus tulajdonságot létrehozni Post::$unknown
  • Объявлена устаревшей возможность динамического создания свойств в классе (как «post->unknown» в примере выше). В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • Lehetővé teszi az érzékeny paraméterek szűrését a verem nyomkövetési kimenetében hiba esetén. Bizonyos információk kivágására akkor lehet szükség, ha a felmerülő hibákkal kapcsolatos információkat automatikusan elküldik a harmadik féltől származó szolgáltatásoknak, amelyek nyomon követik a problémákat, és tájékoztatják a fejlesztőket azokról. Kizárhatja például a felhasználóneveket, jelszavakat és környezeti változókat tartalmazó paramétereket a nyomkövetésből. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'jelszó', 'baz'); Végzetes hiba: nem fogott Kivétel: Hiba a test.php-ben: 8 Verem nyomkövetés: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} a test.php fájlban a 8-as vonalon
  • A változók értékeinek karakterláncokba való helyettesítésének lehetősége a "${var}" és ${(var)} kifejezések használatával elavult. Az általánosan használt "{$var}" és "$var" helyettesítések támogatása megmaradt. Például: "Hello {$world}"; OK "Hello $world"; OK "Hello ${world}"; Elavult: A(z) ${} karakterláncok használata elavult
  • Elavult, részben támogatott hívható elemek, amelyek a "call_user_func($callable)" segítségével hívhatók, de nem támogatják a "$callable()" formátumú hívást: "self::method" "parent::method" "static" ::method " ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar: :method" ]
  • Megvalósított terület-független esetkonverzió. Az olyan függvények, mint a strtolower() és az strtoupper() mostantól mindig úgy alakítják át az ASCII tartományban lévő karakterek kis- és nagybetűit, mintha „C” területi beállításra lennének beállítva.

Forrás: opennet.ru

Hozzászólás