PHP 7: Programmazione orientata agli oggetti.
4.6 (21 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
75 students enrolled
Wishlisted Wishlist

Please confirm that you want to add PHP 7: Programmazione orientata agli oggetti. to your Wishlist.

Add to Wishlist

PHP 7: Programmazione orientata agli oggetti.

Impara la programmazione orientata agli oggetti in php creando un Blog in MVC
4.6 (21 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
75 students enrolled
Created by Hidran Arias
Last updated 7/2017
Italian
Current price: $10 Original price: $45 Discount: 78% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 6.5 hours on-demand video
  • 2 Articles
  • 6 Supplemental Resources
  • 2 Coding exercises
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Conoscere il paradigma della programmazione orientata agli oggetti
  • Creare classi
  • Creare interface
  • Estendere classi
  • Usare gli spazi di nome. namespace
  • Autoload delle classi
  • Traits
View Curriculum
Requirements
  • Avere php 7 installato o connessione internet per installarlo
  • Qualunque editor di testo per scrivere del codice
  • PC, MAC o LINUX
  • Voglia di imparare e aggiornarsi
Description

Se hai già il mio corso, PHP 7: La guida completa, questo  ne fa parte: è già incluso!

PHP dalla version 5.0 implementa in modo completo il paradigma della PROGRAMMAZIONE ORIENTATA AGLI OGGETTI, OOP. 

Siamo adesso alla version 7, php7, e possiamo dichiarare il tipo degli argomenti e del ritorno di una funzione, anche i tipi scalari come string, int, bool.

In questo corso imparerai da zero e passo a passo il paradigma della PROGRAMMAZIONE ORIENTATA AGLI OGGETTI con PHP7.  Vedremo che cosa sono le classi, le loro proprietà e metodi. Cosa sono proprietà e metodi public, protected e private. Vedremo come creare una classe abstract e come implementarla. Vedremo come estendere le classi e le interfacce in php7. Vedremo come dichiarare ed implementare diverse interface. Vedremo come usare il costruttore magico di php, __construct e come inizializzare gli oggetti.

Studieremo le proprietà e metodi statici, le constanti e i metodi final.

Vedremo come utilizzare gli spazi di nome, namespace, e come autocaricare le classi, autoload.

Come ogni mio corso, questo corso si terrà sempre aggiornato con le ultime novità di OOP di php7.

Costruiremo un BLOGGING SYSTEM da zero utilizzando MVC, e pattern come Factory, Singleton, Model

Who is the target audience?
  • Questo corso è per chi già conosce php ma non la programmazione orientata agli oggetti con php
  • Chi vuole prepararsi per la certificazione ZEND CERTIFIED ENGINEER
  • Per coloro che conoscono le classi ma non i traits e i namespace
  • Per chi vuole aggiornare le sue conoscenze a php7
  • Non è per principianti anche se tutto spiegato semplicemente
  • Corso già incluso nel mio corso: php7, la guida completa
Students Who Viewed This Course Also Viewed
Curriculum For This Course
46 Lectures
06:42:00
+
Start Here
1 Lecture 04:52
+
Classi, proprietà e metodi
7 Lectures 01:07:28

Vedremo cos'è una classe e  cosa sono le sue proprietà 

Preview 07:04

Creare una classe
1 question

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; 
    }
}


Classe e costruttore: __construct
04:32

Creare una classe con costrutture
1 question

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:


Metodi setter e getter di una classe
10:51

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;
    }

}
Ereditarietà e override di metodi
14:33

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(){
          
      }
}
Creazione di interfacce, interface in php7.
12:21

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;
     }
 }


PHP7: Classi astratte
08:57

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;
     }
 }
Metodi statici e final delle classi in php7
09:10
+
PHP Magic methods. I metodi magici di php
5 Lectures 26:24

 Introduzione ai magic method di php

php : Introduzione ai magic method
01:54

PHP magic method __get

PHP magic method __get
08:23

PHP magic method __callStatic

PHP magic method __callStatic
04:57

PHP magic method __call

PHP magic method __call
04:37

PHP magic method . Conclusione

PHP magic method . Conclusione
06:33
+
PHP7: Definizioni dei nomi di spazio: namespace
5 Lectures 22:31
PHP7: Definizioni dei nomi di spazio: namespace. INTRO
02:17

I namespace (spazi di nome) servono a incapsulare del codice ed evitare conflitti di nomi di classi, funzioni e costanti:

La classe sotto NS\Arias non andrà in conflitto con qualunque altra classe che si chiami Test in un altro namespace:

<?php
namespace NS\Arias;

class Test 
{
    public function __construct() {
        echo '<h1> Class  '.__NAMESPACE__.'_'.__CLASS__.' created<br>';
    }
}


Preview 05:03

Vedremo come utlizzare include, include_once, require, require_once, per includere delle classi.

include -> include codice php in un altro file

include_once -> come include ma se il file è già stato incluso non lo include di nuovo

require -> come include ma se non trova il file, c'è un fatal error

require_once -> come require ma se il file è già stato incluso non lo include di nuovo

Includere codici di classe con include e require
03:47

Vediamo come includere diversi  namespace, anche se sconsigliato, in un unico file

PHP7: Diversi namespace nello stesso file
04:06

In php possiamo definire una funzione di autocaricamento che verrà chiamata qualora una classe instanziata non venga trovata da php. La funzione bisogna registrarla con la funzione 

spl_autoload_register
function autloadClass($className){
    
    $link = str_replace('\\','/', $className).'.php';
    echo  "<h1>$link</h1>";;
    if(file_exists($link)){
        require_once $link;
    }
}
spl_autoload_register('autloadClass');


PHP7: Auto caricamento delle classi con la funzione spl_autoload_register
07:18
+
Construire una piattaforma di blogging in MVC e uso dei PDO,PHP Databases Object
26 Lectures 04:39:47
Creazione delle tabelle posts e postscomments

Vedremo come creare gli indici delle tabelle in mysql, come creare le  primary key e le foreign key

Preview 06:25

Creazione struttura della cartella in MVC: Model View Controller

Preview 10:56


Vedremo come caricare automaticamente il contenuto delle view nel nostro template layout

Inseriemento contenuto delle view nel template del layout
08:06

Introduzione ai php

PDO e configurazione connessione al database

con mysql

Preview 09:43

Creazione classe  accesso al database  php PDO utilizzando il pattern SINGLETON
Preview 19:19

php .Vedremo come la classe factory crea il dsn giusto da passare alla classe singleton che ci crea il collegamento al database

Utilizzo del pattern Factory e Singleton insieme
08:08

In questa lezione vedremo come creare una classe che utilizza il factory pattern per

gestire i diversi tipi di collegamento PDO di php.

Preview 08:45

Vediamo come iniettare la dipendenza al costruttore della classe postcontroller che si aspetta una variabile di tipo php PDO

Dependency Injection al costruttore della classe PostController
13:59

Vediamo come utilizzare $_SERVER['REQUEST_URI'] e  $_SERVER['REQUEST_METHOD'] per gestire le rotte e mapparle ai diversi metodi della classe PostController
PHP routing. Gestione di rotte mappate su metodi del postcontroller
16:53

MVC php : Aggiungere il model Post.

In questa lezione vedremo come aggiungere la classe Post alla parte model del nostro mvc

MVC php : Aggiungere il model Post
03:54

MVC php : Aggiungiamo una funzione helper per renderizzare le view

MVC php : Aggiungere funzione helper per mostrare le view
04:38

MVC php : Aggiungere al Model Post il metodo find

 

MVC php : Aggiungere al Model Post il metodo find
08:23

In questa lezione vedremo come creare una rotta per la creazione di un nuovo post.
Mvc php : Creare rotta a nuovo Post
13:53

MVC php : Creare la view del nuovo Post e il metodo save nella class Post
MVC php : Creare la view del nuovo Post e il metodo save nella class Post
15:04

MVC php : Funzione helper redirect e visualizzare dettaglio del post
MVC php : Funzione helper redirect e visualizzare dettaglio del post
05:05

Creiamo una classe router in modo da gestire tutte le rotte in una classe dedicata

MVC php : Creare classe Router
08:35

MVC php : Creare classe Router. Metodo dispatch e route
12:59

MVC php : Creare classe Router. Conclusioni
12:14

MVC php : Creare route con regular expression
Preview 15:17

Vediamo come mappare, ed invocare, il metodo della classe definito nella regola del routing
MVC php : mappare routing a metodo di classe
14:20

MVC php : Editare un post: Aggiungere pulsante DELETE e EDIT
10:18

MVC php : Editare un post

MVC php : Editare un post
11:10

MVC php : Editare un post: Gestione degli errori

MVC php : Editare un post: Gestione degli errori
08:05

MVC php : Cancellare un post
MVC php : Cancellare un post
09:56

MVC php : Mostrare i commenti di un post

MVC php : Mostrare i commenti di un post
14:19
+
Bonus Section
2 Lectures 01:15
Download codice del corso
00:02

Bonus Lecture. Sconti ad altri corsi
01:12
About the Instructor
Hidran Arias
4.4 Average rating
1,025 Reviews
7,678 Students
16 Courses
Software Engineer

I'm a cuban living in the beautiful city of Turin, Italy. I have a university degree in computer sciences in the field of automation engineering. I am a software engineer since 2002 and since then I have worked for different italian companies developing web applications with the latest technogies, most of them open sources, such as PHP, MYSQL, ORACLE, CSS, HTML, NODEJS, MONGODB and javascript libraries such as EXTJS, SENCHATOUCH, JQUERY, ANGULARJS.

When I am not programming, I am learning new languages,currently German and Arabic. Currently I speak SPANISH, my mother tongue, ITALIAN,almost my second mother tongue, ENGLISH, FRENCH and PORTUGUESE.

Playing GUITAR is one of my hobbies and passions and I dedicate it as much time as for languages and computer.

People say I am an easy talker, always ready to help people and I love teaching what I know and mainly new technologies. I try to keep always up to date not only by teaching but also by learning and taking courses such as the ones found here in UDEMY .