PHP 8.2 programmandi lingua emissio

Post annum evolutionis emissio linguae programmandi PHP 8.2 oblata est. Novus ramus seriem novarum notarum includit, ac variae mutationes quae convenientiam frangunt.

Key emendationes in PHP 8.2:

  • Facultatem adiecit ut classis notaret ut solum legeretur. Proprietates in talibus generibus semel tantum poni possunt, postquam mutari non possunt. Antea singulae classis proprietates solum lege notari potuerunt, nunc autem hunc modum omnibus proprietatibus simul efficere potes. "Readon" specificare vexillum in gradu classis etiam impedit proprietates dynamice ad genus additae. readonly class Post { functionem publicam __construct( public string $title, public Author $author, ) { } } $post = new Post(/* ... */); $post->incognita = 'wronga'; // Error: Non potest creare dynamic possessionem Post :: $ ignotus
  • Adiectae sunt species separatae "verum", "false" et "nullae", quae unum tantum valorem validum capere possunt et adhibentur, exempli gratia, munus reddere cum errore terminationis vexillum vel inani pretii. Antea "verum", "falsum" et "nullus" non nisi cum aliis speciebus (exempli gratia, "nervus|falsus") adhiberi potest, nunc separatim adhiberi possunt: ​​munus semper falsum, falsum falsum. ; }
  • Facultatem praebet ut parametri sensitivas in ACERVUS vestigii output eliquare per errorem. Quaedam indicia exsectio necessaria esse potest cum informationes de erroribus occurrentibus automatice ad tertiae factionis officia mittuntur quae difficultates vestigent et de eis tincidunt certiorem faciunt. Exempli gratia, parametros excludere potes quae usores, Tesserae, et variabiles ambitus ex typulis includunt. munus test($foo, #[\SensitiveParameter] $password, $baz ) { mittent novam exceptionem ('Error'); } test('foo', 'password', 'baz'); Error fatalis: Uncaught Exceptio: Error in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} proiectus in test.php in linea 8
  • Liceat definire constantes in lineamentis (traits, mechanismum ad reusing codicem). Constant in tramite definita accessi possunt per genus quod trait utitur (non autem per nomen trait). trait Foo { public const CONSTANT = 1; public function bar() : int { return self : : CONSTANT ; // Fatal error } } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1
  • Facultatem ad rationes specificandas in forma disjunctiva normali (DNF, disjunctiva normali forma), permittit ut coniunctio typorum (collectionis duorum vel plurium generum) et intersectio typorum (generum quorum valores sub pluribus cadunt) permittat. types simul). genus Foo munus publicum talea ((A&B)| nullum $entitatem) { si ($ens === nullum) { nullum; } Reditus $ens; } }
  • Nova extensio "Random" proposita est muneribus et generibus ad numeros pseudo-passim generandos et sequentia. Modulus rem ordinatam praebet, permittit vos eligere varia tormenta ad numeros pseudo-passim generandos, iis in cryptographia ad usum accommodatis, et munera auxiliaria praebet, exempli gratia, ut passim vestes et chordas miscentes, claves temere ordinatas eligentes; simultaneus usus plurium generantium cum propria civitate sui iuris. $rng = $is_production ? New Random Engine Secure() : new Random Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Conversio localis-independens casus impletur. Munera sicut strtolower() et strtoupper() nunc semper casus characterum in ASCII convertunt ac si ad "C" localem positi.
  • Nova munera addidit: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium crypto_strem_xchacha20_xor_ic, openssl_cipher_key_length.
  • Novas methodos addidit: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, RefectioFunctionis ::isAnonymous, ReflectionMethod :: hasPrototypum.
  • Facultas dynamice creandi proprietates in genere deprecata est. In PHP 9.0, accessus proprietatum quae in classe non sunt definita, error erit (ErrorException). Classes quae praebent __get et __at modos creandi proprietates, vel proprietates dynamicas in stdClass, immutata opera perseverent, solum opus implicitum cum proprietatibus non-existentibus sustentabitur ad tutelam elit ab occultis cimices. Ad opus vetusti Codicis conservandum, proponitur attributum "#[Properties]", permittens usum proprietatum dynamicarum.
  • Facultas substituendi valores variabiles in chordis utens vocibus "${var}" et ${(var)} deprecata est. Subsidia pro substitutionibus "{$var}" et "$var" communibus adhibitis retenta sunt. Verbi gratia: "Salve {$mundo}"; OK "Salvete $mundo"; OK "Salvete ${mundo}"; Deprecatus est: Utens ${} chordis deprecatur
  • Callables partim imploratae, quae per "call_user_func($callable)" vocari possunt, partim suffragantur, sed vocationis formam "$ callable()": "sui :: methodum" "stare" :: methodum ["se", "modus"] ["parens", "modum"] ["static", "modum"] ["Foo", "Bar:: methodus"] [nova Foo, "Bar: methodus" ]
  • Error_log_modo directivus ad uncinos additus est, sino te modum accessum ad logum erroris determinare.

Source: opennet.ru