Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Matrici PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

PHP OOP - Tratti


PHP - Cosa sono i tratti?

PHP supporta solo l'ereditarietà singola: una classe figlia può ereditare solo da un solo genitore.

Quindi, cosa succede se una classe deve ereditare più comportamenti? I tratti OOP risolvono questo problema.

I tratti vengono utilizzati per dichiarare metodi che possono essere utilizzati in più classi. I tratti possono avere metodi e metodi astratti che possono essere utilizzati in più classi e i metodi possono avere qualsiasi modificatore di accesso (pubblico, privato o protetto).

I tratti sono dichiarati con la trait parola chiave:

Sintassi

<?php
trait TraitName {
  // some code...
}
?>

Per usare un tratto in una classe, usa la use parola chiave:

Sintassi

<?php
class MyClass {
  use TraitName;
}
?>

Diamo un'occhiata a un esempio:

Esempio

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Esempio spiegato

Qui dichiariamo un tratto: message1. Quindi, creiamo una classe: Benvenuto. La classe usa il tratto e tutti i metodi nel tratto saranno disponibili nella classe.

Se altre classi devono usare la funzione msg1(), usa semplicemente il tratto message1 in quelle classi. Ciò riduce la duplicazione del codice, poiché non è necessario dichiarare nuovamente lo stesso metodo più e più volte.



PHP - Utilizzo di più tratti

Diamo un'occhiata a un altro esempio:

Esempio

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

Esempio spiegato

Qui dichiariamo due tratti: messaggio1 e messaggio2. Quindi, creiamo due classi: Welcome e Welcome2. La prima classe (Welcome) usa il tratto message1 e la seconda classe (Welcome2) usa sia il tratto message1 che message2 (più tratti sono separati da virgola).