
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Cosa vedremo durante il corso
Installare laragon
Installare nuova versione di php
Installare xampp su mac
Installare xampp su ubuntu linux
Funzioni variadiche
Funzioni anonime
Arrow functions. php >= 7.4
Funzioni. Parametri passati per valori e
per riferimento
Funzioni. Scope delle variabili. Variabili
locali e globali. global
Definizione tipi di argomenti e tipo di
ritorno
Indicare il tipo di parametro e che può essere null. Ritorno null di funzione
php8: Union types
php8. Named arguments
Codice sorgente della sezione
Str_contains, str_start_with
array_find, array_key_find, array_any, array_all. php >= 8.4
Struttura di controllo. Match . PHP >= 8
Destrutturazione assimetrica di array
Destrutturazione array. php >= 7.4
Consumare API e gestire json con file_get_contents
Leggere dati json con file-get-contets. Mostrare i posts con bootstrap
Passare uno stream context ad file_get_contents
Vedremo cos'è una classe e cosa sono le sue proprietà
Il costruttore di una classe serve a impostare delle condizioni iniziali per gli oggetti
Che verranno costruiti e verrà chiamato ogni volta che si crei un oggetto della classe
__construct
class Auto {
public $color ='';
public $upholstery;
public function __construct($extColor = null, $intColor = null) {
$this->color = $extColor;
$this->upholstery = $intColor;
}
public function getColor()
{
return $this->color;
}
public function setColor(string $colore)
{
if(strlen($colore)<3){
throw new Exception('Invalid argument');
}
$this->color = $colore;
}
}Si possono creare metodi che leggono e impostano proprietà di una classe.
Di solito questi metodi ( per impostare una proprietà) e getter( per leggerla) sono pubblici:
Con l'attributo extends, si può indicare ad una classe di estendere (ereditare) un'altra classe.
Si potranno sovrascrivere i metodi della classe parent e per poter chiamare i metodi della classe parent, bisogna precedere il nome del metodo con parent::
class Auto {
protected $color = '';
protected $upholstery;
public function __construct($extColor = null, $intColor = null) {
$this->color = $extColor;
$this->upholstery = $intColor;
}
public function getColor() {
return $this->color;
}
public function setColor(string $colore) {
if (strlen($colore) < 3) {
throw new Exception('Invalid argument');
}
$this->color = $colore;
}
public function getUpholstery() {
return $this->upholstery;
}
public function setUpholstery(string $uph) {
$this->upholstery = $uph;
}
}
class Truck extends Auto {
protected $weight;
public function __construct($extColor = null, $intColor = null, $weight) {
parent::__construct($extColor, $intColor);
$this->weight = $weight;
//
}
public function getColor() {
return strtoupper(parent::getColor());
}
public function getWeight(){
return $this->weight;
}
public function setWeight($w){
return $this->weight = $w;
}
}Una interface serve a indicare alle classi che implementeranno l'interface quali sono i metodi da implementare senza che l'interface li debba definire. E' solo un compromesso che si assume la classe di fare l'implementazione di ciascun metodo:
interface iCar {
public function stop();
public function start();
public function changeGear(int $v);
public function park();
public function accelerate();
}
class Auto implements iCar {
public $iStopped = true;
protected $gear = 0;
const maxGear = 5;
protected $isParked = false;
public function stop(){
$this->iStopped = true;
}
public function start(){
$this->iStopped = false;
}
public function changeGear( int $v){
if($v > self::maxGear){
$v = self ::maxGear;
}
if($v <0){
$v = 0;
}
$this->gear = $v;
if($this->gear>0){
$this->isParked = $this->isParked= false;
}
}
public function park(){
$this->iStopped = true;
$this->isParked = true;
}
public function accelerate(){
}
}Le classi astratte (abstract) non possono essere instanziate. Le classi con almeno un metodo abstract, devono essere abstract.
Le classi che estendono una classe abstract, devono implementare il metodo bastract:
abstract class Car {
protected $speed = 0;
abstract protected function speedUp(int $v);
public function getSpeed(){
return $this->speed;
}
}
class myCar extends Car{
protected $speed = 0;
public function speedUp(int $v) {
$this->speed += $v;
}
}Metodi e proprietà definiti che static possono essere chiamati direttamente senza dover instanziare una classe:
abstract class Car {
protected $speed = 0;
public static $classVersion='1';
abstract protected function speedUp(int $v);
public final function getSpeed(){
return $this->speed;
}
public static function getVersion(){
return self::$classVersion;
}
}php. Come usare constanti nelle classi
Variabili statiche, self e static nelle classi
Self vs static. Ritornare new self() e new static()
Typed properties. Proprietà tipificate
Constructor property promotion. Proprietà automatiche via constructor
Proprietá solo lettura e classi solo lettura. readonly properties and classes
Nullsafe operator. php >= 8.
PHP >= 8.4: Scrivere Classi Più Pulite ed Espressive con i Property Hooks
Union type
Intersection type
Vuoi smettere di scrivere script PHP e iniziare a costruire applicazioni web professionali, robuste e scalabili?
Se hai già le basi di PHP ma senti che ti manca il passo successivo per diventare uno sviluppatore backend di alto livello, questo è il corso che ti trasformerà.
PHP non è più solo un linguaggio di scripting. Con PHP 8+, è diventato un ecosistema potente per costruire applicazioni complesse, performanti e manutenibili, alla pari di altri linguaggi backend. In questo corso, non imparerai solo la sintassi della Programmazione Orientata agli Oggetti (OOP), ma imparerai a pensare come un architetto software.
Costruiremo insieme, passo dopo passo, una piattaforma di blogging completa da zero, utilizzando un'architettura MVC (Model-View-Controller) professionale. Questo non sarà un semplice "progetto per imparare", ma un'applicazione reale che ti insegnerà le pratiche usate ogni giorno nelle aziende di tecnologia.
Cosa Padroneggerai in Questo Corso:
Programmazione a Oggetti (OOP) a Livello Avanzato: Classi (anche abstract e final), interfacce, ereditarietà, traits, enums e le nuove funzionalità di PHP 8+ come readonly properties e property promotion.
Architettura del Software Professionale: Progetta e implementa un'architettura MVC pulita, separando la logica, la presentazione e l'accesso ai dati.
Design Pattern Fondamentali: Applica pattern come Singleton per la connessione al database, Factory per creare oggetti in modo flessibile e costruisci un Router avanzato per gestire le richieste web.
Scrivere Codice Pulito e Organizzato: Usa i namespace per evitare conflitti e organizza il tuo codice in modo logico e manutenibile. Impara a usare l'autoloading di Composer (PSR-4), lo standard del settore.
Interagire con i Database in Modo Sicuro: Padroneggia PDO per comunicare con il database (MySQL) in modo sicuro, prevenendo le SQL injection.
Costruire un Sistema di Autenticazione Completo: Implementa login, registrazione, gestione delle sessioni/cookie e protezione delle rotte basata sui ruoli utente.
Consumare API Esterne: Impara a recuperare e processare dati JSON e XML da servizi di terze parti.
Gestione Professionale di Errori ed Eccezioni: Configura un sistema robusto per tracciare e gestire gli errori in modo che la tua applicazione non si blocchi in modo imprevisto.
Questo corso è perfetto per te se:
Conosci le basi di PHP (variabili, array, cicli, funzioni) e vuoi fare il salto di qualità.
Sei uno sviluppatore WordPress o usi framework come Laravel/Symfony e vuoi capire a fondo i principi OOP e MVC su cui si basano.
Vuoi imparare a scrivere codice PHP testabile, manutenibile e che segua le best practice moderne.
Prerequisiti:
Conoscenza di base di PHP.
Comprensione di base di HTML.
Un computer (Windows, macOS o Linux) su cui installare un ambiente di sviluppo locale.
Sei pronto a trasformare le tue competenze in PHP e a costruire applicazioni di cui essere fiero?
Iscriviti ora e iniziamo a scrivere codice professionale insieme!