რელიზი!
PHP 8.0 — PHP ენის დიდი განახლება.
ის შეიცავს ბევრ ახალ შესაძლებლობას და ოპტიმიზაციებს, მათ შორის დასახელებული არგუმენტები, union type, ატრიბუტები, თვისებების გამარტივებული განსაზღვრა კონსტრუქტორში, გამოსახულება match, ოპერატორი nullsafe, JIT და გაუმჯობესებები ტიპის სისტემაში, შეცდომების დამუშავება და თანმიმდევრულობა.

დასახელებული არგუმენტები RFC

PHP 7
PHP 8
  • მიუთითეთ მხოლოდ საჭირო პარამეტრები, გამოტოვეთ არასავალდებულო.
  • არგუმენტების თანმიმდევრობა არ არის მნიშვნელოვანი, არგუმენტები თვითდოკუმენტირებადია.

Attributes RFC დოკუმენტაცია

PHP 7
PHP 8

PHPDoc ანოტაციების ნაცვლად, შეგიძლიათ გამოიყენოთ სტრუქტურული მეტამონაცემები ნატიური PHP სინტაქსით.

თვისებების განახლება კონსტრუქტორში RFC დოკუმენტაცია

PHP 7
x = $x; $this->y = $y; $this->z = $z; } }', );?>
PHP 8

ნაკლები შაბლონური კოდი თვისებების განსაზღვრისა და ინიციალიზაციისთვის.

Union types RFC დოკუმენტაცია

PHP 7
number = $number; } } new Number(\'NaN\'); // შეცდომები არაა', );?>
PHP 8

PHPDoc ანოტაციების ნაცვლად, გაერთიანებული ტიპებისთვის შეგიძლიათ გამოიყენოთ განცხადება union type, რომლებიც მოწმდება შესრულების დროს.

გამოსახულება Match RFC დოკუმენტაცია

PHP 7
ოოო არა!', );?>
PHP 8
"Oh no!", 8.0 => "ის, რასაც მე ველოდი", }; //> ის, რასაც მე ველოდი', );?>

ახალი გამოსახულება match, switch ოპერატორის მსგავსია შემდეგი მახასიათებლებით:

  • Match — ეს არის გამოსახულება, მისი შედეგი შეიძლება შენახული იყოს ცვლადში ან დაბრუნდეს.
  • პირობა match მხარს უჭერერს მხოლოდ ერთსტრიქონიან გამოსახულებებს, რომლებიც არ საჭიროებენ break; კონტროლის კონსტრუქციას.
  • გამოსახულება match იყენებს მკაცრ შედარებას.

ოპერატორი Nullsafe RFC

PHP 7
user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } }', );?>
PHP 8
user?->getAddress()?->country;', );?>

null-ის შემოწმების ნაცვლად, შეგიძლიათ გამოიყენოთ გამოძახების თანმიმდევრობა ახალ Nullsafe ოპერატორით. როდესაც ერთ-ერთი ელემენტი თანმიმდევრობაში აბრუნებს null-ს, შესრულება ჩერდება და მთელი თანმიმდევრობა აბრუნებს null-ს.

სტრიქონებისა და რიცხვების გაუმჯობესებული შედარება RFC

PHP 7
PHP 8

PHP 8 რიცხვითი სტრიქონის შედარებისას იყენებს რიცხვების შედარებას. წინააღმდეგ შემთხვევაში, რიცხვი გარდაიქმნება სტრიქონად და გამოიყენება სტრიქონების შედარება.

ტიპების თანმიმდევრულობის შეცდომები ჩაშენებული ფუნქციებისთვის RFC

PHP 7
PHP 8

შიდა ფუნქციების უმეტესობა უკვე გამორიცხავს Error გამონაკლისს, თუ შეცდომა მოხდა პარამეტრის შემოწმებისას.

კომპილაცია Just-In-Time

PHP 8 წარმოგიდგენთ JIT-კომპილაციის ორ მექანიზმს. JIT ტრასირება, მათგან ყველაზე პერსპექტიულია, სინთეზურ ბენჩმარკზე აჩვენებს მუშაობის გაუმჯობესებას დაახლოებით 3-ჯერ და 1.5-2-ჯერ ზოგიერთ დიდ ხანს მომუშავე აპლიკაციებში. აპლიკაციის სტანდარტული წარმადობა ერთ და იგივე დონეზეა PHP 7.4-თან.

JIT-ის შედარებითი წვლილი PHP 8-ის წარმადობაში

Just-In-Time compilation

გაუმჯობესებები ტიპის სისტემაში და შეცდომების დამუშავება

  • ტიპის უფრო მკაცრი შემოწმება არითმეტიკული/ბიტიური ოპერატორებისთვის RFC
  • აბსტრაქტული თვისებების მეთოდების შემოწმება RFC
  • ჯადოსნური მეთოდების სწორი სიგნატურები RFC
  • ძრავის გაფრთხილებების ხელახალი კლასიფიკაცია RFC
  • ფატალური შეცდომა, როდესაც მეთოდის სიგნატურა შეუთავსებელია RFC
  • @ ოპერატორი აღარ აჩუმებს ფატალურ შეცდომებს.
  • მემკვიდრეობა private მეთოდებთან RFC
  • ახალი ტიპი mixed RFC
  • დაბრუნების ტიპი static RFC
  • ტიპები სტანდარტული ფუნქციებისთვის Email თემა
  • გაუმჭვირვალე ობიექტები რესურსების ნაცვლად Curl, Gd, Sockets, OpenSSL, XMLWriter, and XML გაფართოებებისთვის

სინტაქსის სხვა გაუმჯობესება

  • მძიმე დაშვებულია პარამეტრების სიის ბოლოს RFC და use დამოკლების სიაში RFC
  • ბლოკი catch ცვლადის მითითების გარეშე RFC
  • ცვლადის სინტაქსის ცვლილება RFC
  • სახელების სივრცეში სახელები განიხილება, როგორც ერთიამნი ტოკენი RFC
  • გამოსახულება Throw RFC
  • დამატება ::class ობიექტებისთვის RFC

ახალი კლასები, ინტერფეისები და ფუნქციები