PHP - Incapsulamento

L'incapsulamento è uno dei principi fondamentali della programmazione orientata agli oggetti (OOP). Si riferisce all'unione di dati con i metodi che operano su quei dati. In PHP, l'incapsulamento può essere raggiunto utilizzando classi e modificatori di accesso come public, private e protected. Questo tutorial ti guiderà attraverso i fondamentali dell'incapsulamento in PHP, iniziando con i membri public, poi passando ai membri private e infine coprendo i membri protected.

PHP - Encapsulation

Membri Public

I membri public sono accessibili da ovunque, sia all'interno che all'esterno della classe. Vengono dichiarati utilizzando la parola chiave public. Ecco un esempio di una semplice classe con un membro public:

class Car {
    public $color;

    public function setColor($color) {
        $this->color = $color;
    }

    public function getColor() {
        return $this->color;
    }
}

$myCar = new Car();
$myCar->setColor("rosso");
echo "La mia auto è " . $myCar->getColor() . "."; // Output: La mia auto è rosso.

In questo esempio, abbiamo una classe Car con una proprietà public $color e due metodi public setColor() e getColor(). Possiamo facilmente impostare e ottenere il colore dell'auto dall'esterno della classe.

Membri Private

I membri private sono accessibili solo all'interno della classe in cui sono definiti. Vengono dichiarati utilizzando la parola chiave private. Ecco un esempio di una classe con un membro private:

class BankAccount {
    private $balance;

    public function __construct($initialBalance) {
        $this->balance = $initialBalance;
    }

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount;
        }
    }

    public function getBalance() {
        return $this->balance;
    }
}

$myAccount = new BankAccount(100);
$myAccount->deposit(50);
echo "Il mio saldo del conto è " . $myAccount->getBalance() . "."; // Output: Il mio saldo del conto è 150.

In questo esempio, abbiamo una classe BankAccount con una proprietà private $balance e due metodi public deposit() e getBalance(). La proprietà $balance non è direttamente accessibile dall'esterno della classe, ma possiamo manipolarla utilizzando il metodo deposit() e recuperare il suo valore utilizzando il metodo getBalance().

Membri Protected

I membri protected sono accessibili all'interno della classe in cui sono definiti e anche all'interno di qualsiasi sottoclasse. Vengono dichiarati utilizzando la parola chiave protected. Ecco un esempio di una classe con un membro protected:

class Animal {
    protected $name;

    public function __construct($name) {
        $this->name = $name;
    }
}

class Dog extends Animal {
    public function bark() {
        echo "Woof! Sono " . $this->name . ".";
    }
}

$myDog = new Dog("Buddy");
$myDog->bark(); // Output: Woof! Sono Buddy.

In questo esempio, abbiamo una classe Animal con una proprietà protected $name. La classe Dog estende la classe Animal e ha accesso alla proprietà $name perché è protected. Possiamo utilizzare la proprietà $name all'interno della classe Dog per implementare il metodo bark().

Conclusione

L'incapsulamento è un concetto cruciale nell'OOP che aiuta a mantenere l'integrità dei dati limitando l'accesso diretto ad essi. Utilizzando modificatori di accesso come public, private e protected, puoi controllare come i tuoi dati vengono accessibili e modificati. Comprendere l'incapsulamento ti aiuterà a scrivere codice più robusto e manutenibile in PHP e in altre lingue OOP.

Credits: Image by storyset