Nowości w PHP 8.0

Bartosz

Bartosz Stefanicki Poniedziałek, 22.04.2024

Nowości w PHP 8.0

Sprawdźmy kolejną już, ósmą wersję tego języka. Co ciekawego w niej możemy znaleźć, czy są to przełomowe zmiany?

1. Named arguments

Na początku chciałbym wspomnieć o argumentach nazwanych. Przy korzystaniu z metod, funkcji, które posiadały wiele argumentów w tym opcjonalnych, należało po kolei je wypisywać.

foo (string $name, int $age = 18, string $color = 'blue') {}

foo ('Ania', 18, 'orange');

W PHP 8.0 można to zrobić inaczej:

foo (name: 'Ania', color: 'orange');

2. Union types

Dotychczas nie można było definiować zestawu typu wejściowych i zwracanych. Wyglądało to w ten sposób:

public function setSomething(int $something): self
{
  $this->something = $something;
  
  return $this;
}

public function getSomething(): int
{
  return $this->something;
}

Od wersji PHP 8.0 możemy korzystać z łączonych typów:

public function setSomething(int|string $something): self
{
  $this->something = $something;
  
  return $this;
}

public function getSomething(): int|string
{
  return $this->something;
}

3. Constructor property promotion

Kolejna nowość, dzięki której kod może być krótszy i bardziej przejrzysty. Do tej pory konstruktor w PHP 7.4 mógł wyglądać tak:

class Foo 
{
  public string $name;
  protected int $age;
  
  public function __construct(string $name, int $age)
  {
    $this->name = $name;
    $this->age = $age;
  }
}

I przyjemniejsza część, czyli jak to można zapisać w PHP 8.0:

class Foo 
{
  public function __construct(public string $name, protected int $age)
  {
  }
}

4. Match expression

Najprościej chyba porównać match expression do skróconej instrukcji switch. Do porównania wartości używa silnego typowania (czyli ===).

$operators = match($color) {
  'orange' => 'Orange',
  'green' => 'Plus',
  'purple' => 'Play'
};

5. Nowy typ: mixed

Do tej pory mogliśmy wykorzystywać jako typ, np. int czy string. PHP 8.0 dodaje nowy mixed, który oznacza jeden z typów:

  • array
  • string
  • int
  • float
  • bool
  • callable
  • null
  • object
  • resource
function foo(): mixed 
{
}

6. Throw expressions

Dzięki tej nowości wyjątek można zwrócić w nowych miejscach.

$foo = $bar ?? throw new CustomException();

7. JIT - Just In Time

Kompilator JIT ma zapewnić szybsze wykonywanie kodu PHP. W tym momencie testy porównawcze nie wykazują dużych przeskoków w czasie wykonywania, ale być może zmieni się to w przyszłości.

8. Operator nullsafe

Dotychczasowe porównanie:

$name = $user->getAddress() ? $user->getAddress()->getStreet() : null;

I skrócone porównanie w PHP 8.0:

$name = $user->getAddress()?->getStreet();

Cykl życia wersji PHP

Wersja PHP Data wydania Koniec wsparcia Koniec poprawek bezpieczeństwa
PHP 5.6 27.04.2014 19.01.2017 31.12.2018
PHP 7.0 1.12.2015 4.01.2018 10.01.2019
PHP 7.1 30.11.2016 1.12.2018 1.12.2019
PHP 7.2 28.11.2017 30.11.2019 30.11.2020
PHP 7.3 4.12.2018 6.12.2020 6.12.2021
PHP 7.4 26.11.2019 28.11.2021 28.11.2022
PHP 8.0 24.11.2020 26.11.2022 26.11.2023

Na koniec

A wy jakie znacie sztuczki w PHP 8.0?

Warto zobaczyć

Szukasz hostingu?

Jest dużo firm oferujących hosting, ale którą wybrać? Przedstawiamy zestawienie najciekawszych propozycji i ranking hostingów (Kwiecień 2024).

Data publikacji: Czwartek, 20.05.2021. Tagi: hosting, php, skrypty, top10. Źródło obrazka Pixabay, Font awesome.

1 komentarz


© 2005-2024 itporady.pl. Wszystkie prawa zastrzeżone.

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.