Named Arguments - OOP in PHP

Named Arguments - OOP in PHP

In PHP 8, i named arguments (argomenti nominati) sono un tipo di parametro di funzione che consentono di specificare i valori degli argomenti di una funzione utilizzando il loro nome invece del loro ordine.

Nell'utilizzo standard delle funzioni, gli argomenti sono specificati nell'ordine in cui sono definiti nella firma della funzione. Tuttavia, quando si utilizzano named arguments, gli argomenti possono essere specificati in qualsiasi ordine, purché vengano identificati dal loro nome.

Sintassi utilizzando i named arguments

class MyClass {
  private $arg1;
  private $arg2;
  private $arg3;

  public function __construct(string $arg1, int $arg2, bool $arg3) {
    $this->arg1 = $arg1;
    $this->arg2 = $arg2;
    $this->arg3 = $arg3;
  }
}

// Utilizzo della classe con named arguments
$obj = new MyClass(arg1: 'valore1', arg3: true, arg2: 123);

Esempio utilizzando il metodo construct property promotion

/lib/automobile.php

<?php
class Automobile 
{
    function __construct(
        public string $marca,
        public string $modello,
        public string $tipologia,
        public int|float $prezzo = 0
        ){
    }

    public function riepilogo(){
        return "Marca: $this->marca <br>
        Modello: $this->modello <br>
        Tipologia: $this->tipologia <br>
        Prezzo: $this->prezzo <br><br>";
    }
}
?>

/named-arguments.php

<?php
declare(strict_types=1);
require __DIR__ . '/lib/automobile.php';

/*  In PHP8 grazie ai named arguments (specificando il nome dell'argomento nella creazione di un istanza) 
    possiamo  scrivere i valori degli argomenti non tenendo conto della posizione. */
$citroenC4 = new Automobile(marca: "Citroen", modello: "C4 Cactus" , tipologia: "CrossOver", prezzo: 25000);
$panda4x4 = new Automobile(prezzo: 15000,tipologia: "Fuoristrada",modello: "Panda 4x4",marca: "Fiat");
$audiR8 = new Automobile(modello:"R8",marca:"Audi",prezzo: 105000,tipologia:"Coupè");

echo $citroenC4->riepilogo();
echo $panda4x4->riepilogo();
echo $audiR8->riepilogo();

?>

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram