---
title: "PHP 8.5 tagad oficiāli izlaists"
canonical_url: "https://www.zone.lv/blog/php-8-5-tagad-oficiali-izlaists/"
post_type: "post"
published: "2025-12-08T11:08:18+00:00"
modified: "2025-12-16T17:31:06+00:00"
language: "lv"
author: "Ingmar Aasoja"
featured_image: "https://www.zone.lv/static/sites/2/2025/12/PHP-8.5-now-officially-released.webp"
taxonomies:
  category:
    - name: "Atjauninājumi"
      url: "https://www.zone.lv/blog/category/atjauninajumi/"
  post_tag:
    - name: "PHP 8.5"
      url: "https://www.zone.lv/blog/tag/php-8-5/"
---

# PHP 8.5 tagad oficiāli izlaists

**Novembra beigās tika oficiāli izlaista PHP versija 8.5. [Zone serveri](https://www.zone.lv/web-hosting/) jau vairākus mēnešus piedāvā agrīnu piekļuvi, sākot no beta fāzes. Katra jaunā versija atsakās no novecojušām funkcijām un ievieš jauninājumus. Šajā rakstā izceļam ievērojamākās jaunās iespējas.**

![PHP 8.5 now officially released](https://www.zone.lv/static/sites/2/2025/12/PHP-8.5-now-officially-released-1024x577.webp)## Pipe operators (|&gt;)

Šis, iespējams, ir viens no interesantākajiem sintakses jauninājumiem pēdējo gadu laikā – kaut kas, ko PHP izstrādātāji vēl nesen nevarēja iedomāties. Tas būtiski uzlabo koda lasāmību un padara ikdienas izstrādi plūstošāku.

Pipe operators ir īpaši noderīgs darbā ar masīviem un virkņu apstrādi. Ja gala rezultāta iegūšanai mainīgais jāizlaiž caur vairākām funkcijām, tagad tās var ķēdēt daudz elegantāk.

Piemērs, kā no secības izņemt nepāra skaitļus:

#### PHP 8.4

```php
$numbers = implode(',',
    array_filter(
        explode(',', '1,2,3,4,5,,6'),
            function ($var) {
                  return $var && !($var & 1);
            }
      )
);

echo $numbers; // 2,4,6
Code language: PHP (php)
```

#### PHP 8.5

```php
$numbers = '1,2,3,4,5,,6'
    |> (fn($s) => explode(',', $s))
    |> (fn($xs) => array_filter($xs, fn($var) => $var && !($var & 1)))
    |> (fn($xs) => implode(',', $xs));

echo $numbers; // 2,4,6
Code language: PHP (php)
```

## `array_first` un `array_last` funkcijas

Kā jau nosaukumi liecina, šīs jaunās funkcijas atgriež masīva pirmo un pēdējo vērtību. Iepriekš `array_key_first` un `array_key_last` nedaudz palīdzēja, taču izstrādātājiem joprojām bija manuāli jāpārbauda, vai elementi vispār eksistē.

#### PHP 8.4

```php
$names = ['john', 'smith'];
$lastName = $names === [] ? null : $names[array_key_last($names)];

echo $lastName; // smithCode language: PHP (php)
```

#### PHP 8.5

```php
$names = ['john', 'smith'];
$lastName = array_last($names);

echo $lastName; // smithCode language: PHP (php)
```

## Stack trace fatālo kļūdu ziņojumos

Ja programma avarēja fatālas kļūdas dēļ, bieži bija grūti noteikt, kur tieši radās problēma. PHP 8.5 tagad fatālo kļūdu ziņojumos sniedz detalizētāku stack trace. Piezīme: nepieciešams ieslēgt `fatal_error_backtraces = On` savā `php.ini` konfigurācijā.

```php
ini_set('memory_limit', '2M');

$dates = [];

function collectDates($dates) {
    while (true) {
        $dates[] = time();
    }
}

collectDates($dates);Code language: PHP (php)
```

#### PHP 8.4 izvadē:

```
Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 2097160 bytes) in /test.php on line 9
```

#### PHP 8.5 izvadē:

```php
Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 2097160 bytes) in /test.php on line 9
Stack trace:
#0 /test.php(13): collectDates(Array)
#1 {main}Code language: PHP (php)
```

## URI paplašinājums

Agrāk, lai iegūtu informāciju no URL, bija nepieciešama manuāla parsēšana un pārbaude, vai vajadzīgā daļa ir pieejama. PHP 8.5 ievieš īpašu paplašinājumu, kas šo procesu atvieglo:

#### PHP 8.4

```php
$parsed = parse_url('https://example.com:80');

echo $parsed['port'] // 80
echo $parsed['path'] // Warning: Undefined array key "path" ...Code language: PHP (php)
```

#### PHP 8.5

```php
use Uri\Rfc3986\Uri;

$uri = new Uri('https://example.com:80');

echo $uri->getPort(); // 80
echo $uri->getpath(); // ""
echo $uri->withPort(null)->toString(); // https://example.comCode language: PHP (php)
```

## \#\[\\NoDiscard\] atribūts

Ja funkcijas atgrieztajai vērtībai ir nozīme, izstrādātāji tagad var piespiest tās izmantošanu, pievienojot `#[\NoDiscard]` atribūtu. Tas palīdz pamanīt situācijas, kad svarīga atgrieztā vērtība varētu tikt ignorēta.

#### PHP 8.4

```php
function getName() {
    return 'Sohn Smith';
}

getName();Code language: PHP (php)
```

#### PHP 8.5

```php
#[\NoDiscard]
function getName() {
    return 'Sohn Smith';
}

getName();

// Brīdinājums: funkcijas getName() atgrieztā vērtība ir jāizmanto vai apzināti jāignorē, veicot piespiedu konvertēšanu...Code language: PHP (php)
```

## Kopsavilkums

Kopsavilkums

Detalizētāka informācija par šo laidienu pieejama oficiālajā PHP mājaslapā, kur tagad ir [īpaša lapa](https://www.php.net/releases/8.5/en.php) PHP 8.5. Vērts atzīmēt, ka PHP 8.1 drošības atjauninājumi beigsies 2025. gada beigās, bet PHP 8.3 pāriet tikai uz drošības atjauninājumiem. Mēs ļoti iesakām pēc iespējas ātrāk atjaunināt esošās lietotnes uz jaunāko versiju. [Laravel 12](https://github.com/laravel/framework/releases/tag/v12.40.0) un jaunizlaistais [Symfony 8.0](https://symfony.com/releases/8.0) jau pilnībā atbalsta PHP 8.5.
