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!";

?>

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