Nowości w PHP 8.0

Bartosz

Bartosz Stefanicki 24 sierpnia 2022

Nowości w PHP 8.0

Poprzednio pisałem o nowościach w PHP w wersji 7.4. Warto zatem sprawdzić 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 (Październik 2022).

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

Komentarze


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

Używamy informacji zapisanych za pomocą cookies i podobnych technologii m.in. w celach reklamowych, statystycznych oraz dostosowania naszych serwisów do indywidualnych potrzeb użytkowników.