PHP: INTRODUZIONE


• REST - API
• PHP
• ... goals
... Francesco Faloci
PHP
PHP acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti;
E' un linguaggio di scripting interpretato, originariamente concepito per la programmazione di
pagine web dinamiche.

Nasce come progetto Open Surce (Rasmus Lerdorf, il padre del LIMIT), poi RISCRITTO come Zend (Zeev Suraski e Andi Gutmans) per orientamento ad oggetti...
PHP
Perché?

Facilità d'uso
Diffusione
Cross-Platform
PHP
Eg:
<?php
$residents = array(
'Perugia' => 908551,
'Paciano' => 791,
'Città di Castello' => 2753000
);
$sum = 0;
foreach( $residents as $key=>$value) {
echo "• La città ".$key." ha circa ".$value." abitanti. <br>";
$sum += $value;
}
echo "<br><hr>E in tutto ci sono n° <b>".$sum."</b> abitanti!";
?>... /testphp.php
PHP
Potenzialità
• Scripting molto semplice
• Calcoli/Controlli Dinamici su Pagine Web
• Connettività a Data Base
• Rendere disponibili risorse nella Rete
Problematiche
• $<name>
• utf8
• Tipizzato Debole (tutte le variabili sono stringhe)
PHP
Approcci
- Inserire script all'interno di pagine HTML
- Creare contenuti Web direttamente da codice
• echo " <div class='thisClass' id='thisIS' ></div> ";
• die(" <div class='thisClass' id='thisIS' ></div> " );
• printf( $stringa , $formato);
php... e REST?
Rest
Paradigma di architetture di rete, chestabilisce come le risorse sono definite e indirizzate.
Rest (o RESTFul) sono sistemi che mettono a disposizione risorse sulla rete, in base a comandi specifici.

"Una black box che ricevuta una richiesta remota, restituisce dati..."
php... e REST?
Rest
• Identificazione delle risorse (API)
• Utilizzo esplicito dei metodi HTTP (GET, POST, DELETE...)
• Risorse autodescrittive (JSON, web-UI, HTML...)
• Collegamenti tra risorse (URI)
• Comunicazione senza stato (Client gestisce gli stati e sessioni)

php... REST
Eg: URI
http://mtg.dmi.unipg.it/mancini/rest-server/api/imgFromCardid/15403
"Funzione"
"ID"
path/...
REST... problemi
Problematiche Comuni
Un modulo o uno script che richiede una risorsa, non cambia e non può creare problemi.
Se la risorsa cambia, o vengono modificate le configurazioni della risorsa, la risposta deve rimanere la stessa.
REST... risorse
Quali Risorse?
• Generalmente, una risorsa richiesta da una chiamata RESTFul è costituita da un set di dati proveniente da un data base.
• Per richiedere informazioni al Data Base, possiamo sfruttare le potenzialità del PHP.
• MysqpConnect (deprecated 5.4.5+)
• POD / Prepare Statement
Connessione DB
Come si connette php?
// Create a new PDO Object
$DB = new PDO("mysql:host=$hostname; dbname=$dbname", $username, $password);
// Set Errorhandling to Exception
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);Connessione DB
Query?
$sql = "SELECT Cycles.cycleID, Cycles.cycleName, Cycles.cycleDescription,
PrintedCards.PrintedCardID, PrintedCards.printedCardName AS cardName,
CardSets.cardSetID, CardSets.cardSetName, PrintedFaces.artist AS artistID,
Artists.artistName, FaceScans.image_type AS imageType,
FaceScans.faceScanImage AS scanImage
FROM Cycles
INNER JOIN CycleHasCards ON (Cycles.cycleID = CycleHasCards.cycleID)
INNER JOIN PrintedCards ON (CycleHasCards.cardID = PrintedCards.cardID)
INNER JOIN CardSets ON (PrintedCards.cardSetID = CardSets.cardSetID)
INNER JOIN PrintedFaces ON (PrintedCards.PrintedCardID = PrintedFaces.printedCardID)
INNER JOIN FaceScans ON (PrintedFaces.printedFaceID = FaceScans.printedFaceID)
INNER JOIN Artists ON (PrintedFaces.artist = Artists.artistID)
WHERE PrintedCards.language = 'en' AND CycleHasCards.cycleID = :cycle_id
ORDER BY Cycles.cycleID ASC";
$stmt = $DB->prepare($sql);
$stmt->execute(array(":cardID" => $GameCardID));
$resultTmp = $stmt->fetchAll(PDO::FETCH_ASSOC);Errori...


Errori...

Errori...

Errori...
DEBUG!
... buon lavoro
... al lavoro!
Grazie dell'Attenzione
</presentazione>
Rest/Php intro
By frafolo
Rest/Php intro
- 201