PHP OOP - Classi e oggetti
Una classe è un modello per oggetti e un oggetto è un'istanza di classe.
Caso OOP
Supponiamo di avere una classe denominata Fruit. Un frutto può avere proprietà come nome, colore, peso, ecc. Possiamo definire variabili come $nome, $colore e $peso per contenere i valori di queste proprietà.
Quando i singoli oggetti (mela, banana, ecc.) vengono creati, ereditano tutte le proprietà e i comportamenti dalla classe, ma ogni oggetto avrà valori diversi per le proprietà.
Definisci una classe
Una classe viene definita utilizzando la class
parola chiave, seguita dal nome della classe e da un paio di parentesi graffe ({}). Tutte le sue proprietà e metodi vanno all'interno delle parentesi graffe:
Sintassi
<?php
class Fruit {
// code goes here...
}
?>
Di seguito dichiariamo una classe denominata Fruit composta da due proprietà ($name e $color) e due metodi set_name() e get_name() per impostare e ottenere la proprietà $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Nota: in una classe, le variabili sono chiamate proprietà e le funzioni sono chiamate metodi!
Definisci oggetti
Le lezioni non sono niente senza oggetti! Possiamo creare più oggetti da una classe. Ogni oggetto ha tutte le proprietà e i metodi definiti nella classe, ma avranno valori di proprietà diversi.
Gli oggetti di una classe vengono creati utilizzando la new
parola chiave.
Nell'esempio seguente, $apple e $banana sono istanze della classe Fruit:
Esempio
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
Nell'esempio seguente, aggiungiamo altri due metodi alla classe Fruit, per impostare e ottenere la proprietà $color:
Esempio
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - La parola chiave $this
La parola chiave $this si riferisce all'oggetto corrente ed è disponibile solo all'interno dei metodi.
Guarda il seguente esempio:
Esempio
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Quindi, dove possiamo cambiare il valore della proprietà $name? Ci sono due modi:
1. All'interno della classe (aggiungendo un metodo set_name() e usando $this):
Esempio
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Fuori dalla classe (modificando direttamente il valore della proprietà):
Esempio
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - istanza di
Puoi utilizzare la instanceof
parola chiave per verificare se un oggetto appartiene a una classe specifica:
Esempio
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>