Programmazione Orientata agli Oggetti in PHP
Concetti di Programmazione Orientata agli Oggetti
La programmazione orientata agli oggetti (OOP) è un paradigma di programmazione che utilizza "oggetti" per progettare applicazioni e software. Questi oggetti sono istanze di classi, che possono contenere dati sotto forma di campi, anche noti come attributi; e codice, sotto forma di procedure, anche noti come metodi. I principali principi dell'OOP sono l'incapsulamento, l'ereditarietà e la polimorfismo.
Definire Classi in PHP
In PHP, si definisce una classe utilizzando la parola chiave class
. Una classe è un blueprint per la creazione di oggetti. Definisce un set di proprietà e metodi che sono comuni a tutti gli oggetti di un tipo.
class Car {
// Proprietà e metodi della classe vanno qui
}
Creare Oggetti in PHP
Per creare un oggetto da una classe, si utilizza la parola chiave new
seguita dal nome della classe.
$myCar = new Car();
Chiamare Funzioni Membro
Le funzioni membro sono definite all'interno di una classe e vengono utilizzate per eseguire operazioni sulle proprietà dell'oggetto. Si chiama una funzione membro su un oggetto utilizzando l'operatore oggetto ->
.
$myCar->drive(); // Chiama il metodo drive sull'oggetto $myCar
Funzioni Costruttrici
Un costruttore è un metodo speciale che viene chiamato automaticamente quando viene creato un oggetto da una classe. Viene utilizzato per inizializzare le proprietà dell'oggetto.
class Car {
public function __construct() {
// Inizializzare le proprietà qui
}
}
Distruttore
Un distruttore è un metodo speciale che viene chiamato automaticamente quando un oggetto viene distrutto o esce dallo scope. Viene utilizzato per eseguire compiti di pulizia come chiudere le connessioni al database o liberare la memoria.
class Car {
public function __destruct() {
// Compiti di pulizia vanno qui
}
}
Ereditarietà
L'ereditarietà permette a una classe di ereditare proprietà e metodi da un'altra classe. La classe da cui si eredita è chiamata classe padre, e la classe che eredita è chiamata classe figlia.
class ElectricCar extends Car {
// ElectricCar eredita proprietà e metodi da Car
}
Sovrascrittura di Funzioni
La sovrascrittura di funzioni permette a una classe figlia di fornire una diversa implementazione di un metodo già definito nella sua classe padre.
class ElectricCar extends Car {
public function drive() {
// Diversa implementazione del metodo drive
}
}
Membri Pubblici
I membri pubblici sono accessibili da ovunque, sia all'interno che all'esterno della classe.
class Car {
public $color; // Proprietà pubblica
public function drive() { // Metodo pubblico
// Codice va qui
}
}
Membri Privati
I membri privati sono accessibili solo all'interno della classe in cui sono definiti. Non possono essere accessibili dall'esterno della classe.
class Car {
private $color; // Proprietà privata
private function drive() { // Metodo privato
// Codice va qui
}
}
Membri Protetti
I membri protetti sono accessibili all'interno della classe in cui sono definiti e all'interno di qualsiasi sottoclasse.
class Car {
protected $color; // Proprietà protetta
protected function drive() { // Metodo protetto
// Codice va qui
}
}
Interfacce
Un'interfaccia è un contratto che definisce un set di metodi che una classe deve implementare. Se una classe implements un'interfaccia, promette di fornire un'implementazione per tutti i metodi dichiarati nell'interfaccia.
interface Drivable {
public function drive(); // Dichiarazione del metodo
}
class Car implements Drivable {
public function drive() {
// Implementazione del metodo drive
}
}
Costanti
Le costanti sono valori con nomi che non possono essere modificati una volta definiti. Sono utili per definire valori che non dovrebbero cambiare durante l'esecuzione del programma.
class Car {
const MAX_SPEED = 100; // Valore costante
}
Classi Astratte
Una classe astratta è una classe che non può essere istanziata e serve ad essere estesa da altre classi. Può contenere metodi astratti, che sono metodi senza implementazione, e metodi concreti con un'implementazione.
abstract class Vehicle {
abstract public function move(); // Metodo astratto
public function stop() { // Metodo concreto
// Codice va qui
}
}
Keyword Static
La keyword static
viene utilizzata per dichiarare proprietà o metodi come appartenenti alla classe stessa piuttosto che a un'istanza della classe. I membri statici possono essere accessibili senza creare un oggetto della classe.
class Car {
public static $count = 0; // Proprietà statica
public static function getCount() { // Metodo statico
return self::$count;
}
}
Keyword Final
La keyword final
viene utilizzata per prevenire che una classe venga estesa, o che un metodo venga sovrascritto.
final class Car {
// Questa classe non può essere estesa
}
Chiamare Costruttori Padre
Quando si crea una classe figlia, si potrebbe voler chiamare il costruttore della classe padre per inizializzare alcune delle sue proprietà. Questo può essere fatto utilizzando la parola chiave parent
seguita dall'operatore ::
e dal nome del costruttore.
class ElectricCar extends Car {
public function __construct() {
parent::__construct(); // Chiama il costruttore del padre
// Altre inizializzazioni vanno qui
}
}
Credits: Image by storyset