# Classi PHP: costrutti della programmazione orientata agli oggetti

Le classi PHP organizzano il codice in **moduli logici indipendenti**, ciascuno con caratteristiche e metodi specifici. Questo favorisce la gestione e il riutilizzo del codice in progetti complessi.

## Cosa sono le classi PHP?

Le classi PHP sono come modelli o schemi usati per creare oggetti. In una classe vengono definite le **caratteristiche (variabili o attributi) e i metodi (funzioni)** da assegnare a un determinato oggetto. Le classi sono fondamentali nella programmazione orientata agli oggetti e possono essere combinate con altre [funzioni PHP](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-php/). È possibile creare classi anche per estrarre dati da un database MySQL.

Consiglio [Deploy Now](https://www.ionos.it/hosting/deploy-now "Deploy Now di IONOS") di IONOS è l’hosting di ultima generazione per le tue applicazioni. Non solo ti garantisce un’affidabilità eccezionale, ma anche una serie di potenti funzionalità di automazione progettate per ottimizzare i tuoi progetti.

## Come definire le classi PHP

Per definire una classe in PHP si inizia con la parola chiave **class**, seguita dal nome desiderato per la classe, racchiudendo il testo tra parentesi graffe. All’interno delle parentesi graffe possiamo definire le proprietà e i metodi della classe.

```php
class Name {
    // php class example properties and methods
}
```

Di seguito un esempio concreto:

```php
class Animal {
    // Properties
    public $name;
    public $color;
    // Methods
    function set_name($name) {
        $this->name = $name;
    }
    function get_name() {
        return $this->name;
    }
}
```

La classe “Animal” possiede due attributi, “name” e “color” insieme a due metodi, (set\_name) per impostare il nome e (get\_name) per recuperarlo.

Consiglio Se desideri avvicinarti ai concetti della programmazione PHP, puoi consultare il [tutorial PHP per principianti](https://www.ionos.it/digitalguide/siti-web/creare-siti/imparare-a-programmare-in-php-tutorial-per-principianti/) nella nostra Digital Guide. Inoltre, abbiamo messo a confronto i linguaggi [PHP e Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/php-vs-python/) e [PHP e JavaScript](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/php-o-javascript/), analizzandone i rispettivi vantaggi e svantaggi.

## Qual è la relazione fra classi e oggetti in PHP?

Gli oggetti sono istanze di una classe. Istanziando una classe si crea un oggetto che può accedere alle proprietà e ai metodi definiti nella classe stessa. I nuovi oggetti di una classe vengono istanziati utilizzando la parola chiave **new**.

```php
class Animal {
    // Properties
    public $name;
    public $color;
    // Methods
    function set_name($name) {
        $this->name = $name;
    }
    function get_name() {
        return $this->name;
    }
}
$dog = new Animal();
$cat = new Animal();
$dog->set_name('Tom');
$cat->set_name('Mickey');
echo $dog->get_name();
echo "<br>";
echo $cat->get_name();
```

In questo esempio “dog” e “cat” sono istanze della classe “Animal”, alle quali assegniamo un nome.

In aggiunta, le classi PHP possono essere ereditate, il che significa che è possibile **creare una nuova classe derivandola da una già esistente**. La classe figlio eredita tutte le proprietà e i metodi della classe padre, il che permette di riutilizzare e ampliare le varie funzioni. Allo stesso tempo gli oggetti della classe figlio sono istanze della classe base e possono accedere ai suoi metodi.

```php
class Mammal extends Animal {
function breathesAir() {
      echo "inhale";
    }
}
$horse = new Mammal;
$horse->setName("Louis");
```

Utilizzando la parola chiave **extends**, la classe figlio “Mammals” eredita tutte le proprietà e i metodi dalla classe padre “Animal”. È possibile aggiungere nuove funzioni a “Mammal” ma allo stesso tempo accedere alle funzioni ereditate.

## Esempi di utilizzo di classi PHP

Le classi PHP possono essere utilizzate in molti modi. Di seguito illustriamo alcuni esempi pratici.

### PHP instanceof

In PHP, **instanceof** è un operatore che permette di verificare se un oggetto appartiene a una classe specifica o a una classe derivata da essa.

Di seguito un esempio di facile comprensione:

```php
class Animal {
    public function speak() {
        echo "sound";
    }
}
class Dog extends Animal {
    public function speak() {
        echo "bark";
    }
}
$animal = new Dog();
if ($animal instanceof Animal) {
    $animal->speak(); // Output: "bark"
}
```

Anzitutto, si utilizza l’operatore **instanceof** per verificare se la variabile `$animal` è un’istanza della classe PHP “Animal” o di una delle sue classi figlie. Poiché `$animal` è un’istanza della classe derivata “Dog” (ereditata da Animal), la condizione risulta vera e viene eseguito il codice all’interno del blocco “if”.

L’utilizzo dell’operatore `instanceof` è particolarmente utile quando si desidera assicurarsi di poter **accedere a metodi o proprietà specifici** senza generare errori nel caso in cui l’oggetto non presenti la classe desiderata.

### Classi e array PHP

Le classi possono essere salvate in [array PHP](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/php-array/). Questo consente di progettare **strutture di dati complesse**.

```php
class Product {
    public $name;
    public $price;
    public function __construct($name, $price) {
        $this->name = $name;
        $this->price = $price;
    }
}
$products = [
    new Product("Laptop", 800),
    new Product("Smartphone", 400),
    new Product("Tablet", 300)
];
foreach ($products as $product) {
    echo "Product: " . $product->name . ", Price: $" . $product->price . “<br>";
}
```

In questo esempio creiamo la classe “Product” per rappresentare diversi prodotti e successivamente li archiviamo nell’array “products”. Quindi possiamo utilizzare un **meccanismo di foreach** per sottoporre l’array a [cicli PHP](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/cicli-php/) per visualizzare i nomi e i prezzi dei prodotti.

### Costruttore di classi PHP

Il costruttore è un metodo PHP all’interno di una classe che viene richiamato automaticamente quando si crea un oggetto di quella classe. Il compito principale di un costruttore è inizializzare un oggetto o eseguire altre operazioni preparatorie necessarie per garantire che l’oggetto funzioni correttamente.

```php
class Dog {
    private $name;
    private $color;
    // Constructor
    public function __construct($name, $color) {
        $this->name = $name;
        $this->color = $color;
    }
    public function sayHello() {
        return "Hello, my name is {$this->name} and my color is {$this->color}.";
    }
}
$dog = new Dog("Tom", "brown");
echo $dog->sayHello(); // Output: "Hello, my name is Tom and my color is brown."
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/classi-php/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/classi-php/) for AI/LLM consumption.