PHP 8.2-ийн альфа тест хийж эхэллээ

PHP 8.2 програмчлалын хэлний шинэ салбарын анхны альфа хувилбарыг танилцууллаа. 24-р сарын 8.2-нд гаргахаар төлөвлөж байна. PHP XNUMX дээр турших боломжтой эсвэл хэрэгжүүлэхээр төлөвлөж буй үндсэн шинэлэг зүйлүүд:

  • "Худал" ба "null" гэсэн тусдаа төрлүүдийг нэмсэн бөгөөд эдгээрийг жишээ нь алдаатай дууссан тэмдэг эсвэл функцээр хоосон утгыг буцаахад ашиглаж болно. Өмнө нь "false" болон "null"-ыг зөвхөн бусад төрлүүдтэй хамтад нь (жишээ нь, "string|false") ашиглаж болдог байсан бол одоо тусад нь ашиглаж болно: function alwaysFalse(): false { return false; }
  • Ангийг зөвхөн унших боломжтой гэж тэмдэглэх боломжийг нэмсэн. Ийм ангиллын шинж чанаруудыг зөвхөн нэг удаа тохируулах боломжтой бөгөөд дараа нь тэдгээрийг өөрчлөх боломжгүй болно. Өмнө нь ангиллын шинж чанаруудыг зөвхөн унших боломжтой гэж тэмдэглэдэг байсан бол одоо та энэ горимыг бүх ангийн шинж чанаруудад нэг дор асааж болно. Ангийн түвшинд "зөвхөн уншигдах" тугийг зааж өгөх нь мөн ангилалд шинж чанаруудын динамик нэмэхийг блоклодог. зөвхөн унших анги Нийтлэл { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->үл мэдэгдэх = 'буруу'; // Алдаа: Динамик шинж чанарыг үүсгэх боломжгүй Post::$ үл мэдэгдэх
  • Ангид шинж чанаруудыг динамикаар үүсгэх чадвар нь хуучирсан (дээрх жишээн дээрх "post->үл мэдэгдэх" гэх мэт). PHP 9.0-д анх ангид тодорхойлогдоогүй шинж чанаруудад хандахад алдаа гарах болно (ErrorException). Properties үүсгэх __get болон __set аргуудаар хангадаг ангиуд эсвэл stdClass дахь динамик шинж чанарууд өөрчлөгдөөгүй хэвээр ажиллах бөгөөд хөгжүүлэгчийг далд алдаанаас хамгаалахын тулд зөвхөн байхгүй шинж чанаруудтай далд ажлыг зогсооно. Хуучин кодыг үргэлжлүүлэн ажиллуулахын тулд "#[AllowDynamicProperties]" шинж чанарыг санал болгож, динамик шинж чанаруудыг ашиглахыг зөвшөөрдөг.
  • Алдаа гарах үед стекийн ул мөрийн гаралт дахь эмзэг тохиргоог шүүх боломжийг олгосон. Асуудлыг хянаж, хөгжүүлэгчдэд мэдээлдэг гуравдагч талын үйлчилгээнд гарсан алдааны талаарх мэдээллийг автоматаар илгээх үед тодорхой мэдээллийг хасах шаардлагатай байж болно. Жишээлбэл, та хэрэглэгчийн нэр, нууц үг, орчны хувьсагчийг агуулсан параметрүүдийг мөрөөс хасч болно. функцын тест( $foo, #[\SensitiveParameter] $нууц үг, $baz ) { throw new Exception('Алдаа'); } тест('foo', 'нууц үг', 'baz'); Гайхалтай алдаа: Баригдаагүй онцгой тохиолдол: test.php-д алдаа: 8 Стекийн мөр: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php-д хаягдсан. онлайн 8
  • "${var}" болон ${(var)}" илэрхийлэлүүдийг ашиглан хувьсагчийн утгуудыг мөр болгон орлуулах боломж хуучирсан. Түгээмэл хэрэглэгддэг "{$var}" болон "$var" орлуулалтын дэмжлэгийг хадгалсан. Жишээ нь: "Сайн уу {$world}"; OK "Сайн уу $world"; OK "Сайн уу ${world}"; Хуучирсан: ${}-г мөрт ашиглахыг зогсоосон
  • "call_user_func($callable)"-ээр дуудаж болох хэсэгчлэн дэмжигдсэн дуудлагууд нь хуучирсан боловч "$callable()": "self::method" "parent::method" "static ::" хэлбэрээр дуудахыг дэмждэггүй. арга" ["өөрөө", "арга"] ["эцэг эх", "арга"] ["статик", "арга"] ["Foo", "Bar::method"] [шинэ Foo, "Bar: :method" "]
  • Хэлэлцээрээс хамааралгүй тохиолдол хөрвүүлэлтийг хэрэгжүүлсэн. strtolower() болон strtoupper() зэрэг функцууд нь одоо локал тохиргоог "C" болгож байгаа шиг ASCII муж дахь тэмдэгтүүдийн том томруулдаг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх