Come utilizzare le funzioni di Reflection in PHP, uno strumento molto potente in grado di esaminare le caratteristiche e le funzionalità di un oggetto estraendo informazioni da esso.

Impariamo ad utilizzare le funzioni per l’Introspection (“introspezione”) di PHP, o capacità introspettiva degli oggetti, al fine di analizzare e ottenere informazioni utili su classi, interfacce, proprietà e metodi.

Impariamo ad utilizzare i metodi magici di PHP, utilizzati per reagire a diversi eventi e scenari all’interno degli oggetti. Conoscere questi metodi è di fondamentale importanza per lo sviluppo di applicazioni OOP avanzate. Un metodo magico può avere un ruolo fondamentale nelle gerarchie di oggetti di qualsiasi tipologia di applicazione, poiché permette di controllare con precisione situazione e proprietà altrimenti inaccessibili.

Concludiamo il nostro approfondimento sulla creazione di un plugin per Prestashop descrivendo le operazioni necessarie per la visualizzazione dei contenuti di un modulo attraverso un file template e per l’abilitazione delle opzioni di configurazione per il plugin.

Impariamo a creare dei “cloni” delle istanze degli oggetti attraverso l’operatore clone di PHP. Scopriamo quali vantaggi offre la clonazione rispetto al trattamento degli oggetti per riferimento.

Impariamo a specificare il tipo di oggetto passato come parametro in una dichiarazione di funzione o di un metodo tramite il Type Hinting in un linguaggio a tipizzazione debole come PHP.

Cominciamo ad affrontare la procedura necessaria per la realizzazione di un plugin personalizzato di Prestashop. Si parte dall’impostazione dei file, dalla definizione del costruttore e dal settaggio degli attributi per il modulo.

Analizziamo le metodologie di PHP per l’implementazione del meccanismo chiamato polimorfismo, tipico della programmazione object oriented; una soluzione realizzabile tramite la risoluzione dei metodi che si rivela ideale per la creazione di codice riutilizzabile.

Analizziamo una semplice definizione di un’interfaccia, cioè una classe che non potrà essere istanziata ma che è destinata a contenere dei metodi che potranno essere implementati dalle classi. Principali differenze tra interfacce e classi astratte.