Quando utilizzare $this, self, parent, static - OOP in PHP

Quando utilizzare $this, self, parent, static - OOP in PHP

Quando si lavora con la programmazione orientata agli oggetti in PHP, ci sono quattro parole chiave che possono essere utilizzate per accedere a proprietà e metodi all'interno di una classe: $this, self, parent e static. Ognuna di queste parole chiave ha un uso specifico e può essere utile in determinate situazioni.

Riassumiamo in una tabella che confronta l'utilizzo di $this, self, parent e static:

Parola chiaveUtilizzoEsempio
$thisRiferimento all'oggetto corrente$this->nomeProprieta
$this->nomeMetodo()
selfRiferimento alla classe corrente (non all'istanza)self::nomeProprieta
self::nomeMetodo()
parentRiferimento alla classe genitore della classe correnteparent::nomeProprieta
parent::nomeMetodo()
staticRiferimento alla classe corrente (o figlia) dell'oggetto chiamante (late static binding)static::nomeVariabile
static::nomeMetodo()

Quando utilizzare $this

La parola chiave $this viene utilizzata per riferirsi all'oggetto corrente all'interno di una classe. Questo significa che può essere utilizzato per accedere alle proprietà e ai metodi non statici dell'oggetto stesso. Ad esempio, se si vuole accedere ad una proprietà chiamata "nome" all'interno della stessa istanza della classe, si può usare $this->name.


class A {
    public $aProp = "Proprietà aProp";
    public function aMetod(){
        return $this->aProp;
    }
}

// Istanziamo classe contenente this
$usoThis = new A();
echo $usoThis->aMetod() . "\n";

Quando utilizzare self

La parola chiave self viene utilizzata per riferirsi alla classe corrente (non all'istanza). Questo significa che può essere utilizzato per accedere alle proprietà e ai metodi statici della classe. Ad esempio, se si vuole accedere ad una variabile statica chiamata "numero" nella stessa classe, si può usare self::$number.

class B {
    public static $bProp = "Proprietà bProp";
    public function bMethod(){
        return self::$bProp;
    }
}
// Istanziamo classe contenente self
$usoSelf = new B();
echo $usoSelf->bMethod(). "\n";

Quando utilizzare parent

La parola chiave parent viene utilizzata per riferirsi alla classe genitore della classe corrente. Questo significa che può essere utilizzato per accedere alle proprietà e ai metodi della classe genitore. Ad esempio, se si vuole accedere ad un metodo chiamato "calcola()" nella classe genitore, si può usare parent::calcola().

Class C {
    public function cMethod(){
        echo "La classe :" . __CLASS__ . " contiente " . __METHOD__;
    }
}
Class D extends C {
    public function dMethod(){
        parent::cMethod();
    }
}
// Istanziamo classe contenente parent
$usoParent = new D();
echo $usoParent->dMethod(). "\n";

Quando utilizzare static

La parola chiave static viene utilizzata per riferirsi alla classe corrente (o figlia) dell'oggetto chiamante (late static binding). Questo significa che può essere utilizzato per accedere alle proprietà e ai metodi statici della stessa classe o delle classi figlie. Ad esempio, se si vuole accedere ad un metodo statico chiamato "stampa()" nella stessa classe o in una delle classi figlie, si può usare static::stampa().

class E 
{
    public static $eProp = "Hello, World!";
    public static function eMethod(){
        echo static::$eProp;
    }
}
  
  class F extends E
  {
    public static $eProp = "Ciao, Mondo";
  }
// Invochiamo 
F::eMethod();

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