Menu
Coddy logo textTech

Metodi e proprietà statici

Fa parte della sezione Programmazione orientata agli oggetti del percorso PHP di Coddy. Lezione 17 di 91.

Proprio come le proprietà possono essere statiche, anche i metodi possono appartenere alla classe stessa anziché ai singoli oggetti. I metodi statici vengono chiamati direttamente sulla classe, senza dover prima creare un'istanza.

Dichiari un metodo statico usando la parola chiave static e lo chiami con il nome della classe e l'operatore :::

<?php
class MathHelper {
    public static function add($a, $b) {
        return $a + $b;
    }
    
    public static function multiply($a, $b) {
        return $a * $b;
    }
}

echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);

Output:

8
8

I metodi statici funzionano bene con le proprietà statiche. Uno schema comune consiste nell'usare un metodo statico per gestire i dati condivisi della classe:

<?php
class Counter {
    private static $count = 0;
    
    public static function increment() {
        self::$count++;
    }
    
    public static function getCount() {
        return self::$count;
    }
}

Counter::increment();
Counter::increment();
echo Counter::getCount();

Output:

2

Nota che i metodi statici non possono usare $this perché non esiste un'istanza di un oggetto. Possono accedere solo alle proprietà statiche e ad altri metodi statici usando self::.

Punto chiave: I metodi statici sono utili per le funzioni di utilità che non richiedono lo stato di un oggetto o per gestire i dati a livello di classe. Forniscono funzionalità senza richiedere l'istanziazione di un oggetto.

challenge icon

Sfida

Facile

Costruiamo un sistema di generazione degli ID che utilizza metodi e proprietà statici per creare identificatori univoci senza dover istanziare oggetti.

Creerai due file per organizzare il tuo codice:

  • IdGenerator.php: Definisci una classe IdGenerator che gestisce la generazione di ID univoci utilizzando solo membri statici. La classe deve avere una proprietà statica privata $lastId che inizia da 0 e una proprietà statica privata $prefix impostata su "ID". Crea un metodo statico generate() che incrementa l'ultimo ID e restituisce una stringa formattata che combina il prefisso e il nuovo ID (come "ID1", "ID2" e così via). Aggiungi un metodo statico setPrefix($newPrefix) che modifica il prefisso e un metodo statico getLastId() che restituisce il valore corrente di $lastId.
  • main.php: Includi il file della classe IdGenerator. Genera due ID usando il prefisso predefinito e stampa ciascuno su una riga separata. Poi modifica il prefisso in "USER" usando il metodo statico, genera altri due ID e stampa ciascuno. Infine, stampa il numero dell'ultimo ID chiamando il metodo statico appropriato.

Ricorda che i metodi statici vengono chiamati direttamente sulla classe usando ClassName::methodName() e che, all'interno della classe, accedi alle proprietà statiche con self::$propertyName. Poiché non esiste un'istanza dell'oggetto, non puoi usare $this nei metodi statici.

L'output dovrebbe mostrare la progressione degli ID con prefissi diversi, dimostrando come le proprietà statiche mantengano i propri valori tra più chiamate ai metodi.

Provalo tu

<?php

// Includi il file della classe IdGenerator
require_once 'IdGenerator.php';

// TODO: Genera due ID usando il prefisso predefinito e stampa ciascuno su una riga separata

// TODO: Cambia il prefisso in "USER" usando il metodo statico

// TODO: Genera altri due ID e stampa ciascuno su una riga separata

// TODO: Stampa il numero dell'ultimo ID usando il metodo statico appropriato

?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore PHP online