Argumente Denumite (Named Arguments) în PHP 8 în PHP

Cum transmiți parametri unei funcții după nume în loc de poziție numerică: omiterea parametrilor opționali impliciți și cod auto-documentat.

Sintaxă
htmlspecialchars($text, double_encode: false);

Argumentele Denumite (Named Arguments) permit transmiterea valorilor către o funcție sau metodă specificând explicit numele parametrului urmat de două puncte (numeParametru: $valoare), în locul ordinii poziționale stricte stabilite în definiția funcției.

Scenarii de utilizare a argumentelor denumite
<?php

declare(strict_types=1);

// 1. Omiterea parametrilor impliciți din funcțiile native PHP
$html = '<a href="test">Legătură</a>';

// În PHP 7, pentru a schimba al 4-lea parametru trebuia să trimiți valorile implicite pentru 2 și 3:
// htmlspecialchars($html, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, 'UTF-8', false);

// În PHP 8, specifici direct parametrul dorit:
$sigur = htmlspecialchars($html, double_encode: false);

// 2. Apelarea metodelor de clasă cu parametri ordonați liber
function configureazaCookie(
    string $nume, 
    string $valoare = '', 
    int $expirare = 0, 
    string $cale = '/', 
    bool $securizat = true, 
    bool $doarHttp = true
): void {
    // Configurare cookie...
}

// Apel curat, auto-documentat și lizibil:
configureazaCookie(
    nume: 'sesiune_auth',
    valoare: 'tk_98124',
    doarHttp: true,
    securizat: true
);

Avantaje Majore

  • Claritate extremă a codului: Elimină întrebarea clasică „Ce însemna al treilea argument boolean true din funcția asta?”.
  • Independență de ordine: Parametrii numiți pot fi trimiși în orice ordine după parametrii poziționali.
  • Refactoring sigur: Adăugarea de noi parametri opționali într-o funcție existentă nu mai sparge apelurile care folosesc argumente denumite.