Web Programming - Giulio Rossetti

Transcript

Web Programming - Giulio Rossetti
Web Programming
Lezione 1: LAMP e Introduzione a PHP
Giulio Rossetti
Guru@Work
10/03/2011
Contatti
Materiale
Tutto il materiale del corso sarà reso disponibile sul sito:
www .guruatwork.com (e su blog .giuliorossetti.net)
Domande
Per domande su temi inerenti al corso è possibile inviare mail all’indirizzo
[email protected] specificando nel Subject [G @W : PHP]
Cosa è PHP?
“Un programma per computer fa quello che gli dici, non quello che
vuoi” - Greer
• Php: Hypertext Processor è un linguaggio di programmazione
utilizzato prevalentemente per la programmazione di pagine web.
• Alcune caratteristiche “tecniche”
•
•
•
•
•
è un linguaggio di scripting
è interpretato (non compilato)
è Server side (non client side - come ad es. Javascript)
è debolmente tipizzato (vedremo cosa significa..)
consente la programmazione Object Oriented
• Ed inoltre.. è Open Source
Programmazione Web.. cosa è necessario?
“In nome della necessità sono stati compiuti i delitti più inutili ed
efferati.” - Disraeli
• Un computer con sistema operativo installato;
• Un server Web per visualizzare le pagine prodotte;
• Un DBMS (Database management system) per salvare le
informazioni (non vedremo come in questo corso);
• Un linguaggio di programmazione (es. PHP) e le basi di HTML (è
utile conoscere anche i CSS).
In altre parole...
un “sistema” LAMP (Linux - Apache - mysql - PHP)
“Un sistema operativo” perché “Linux”?!?
“Aver paura del diavolo è uno dei modi di dubitare di Dio.” - Gibran
Il SO può essere qualsiasi (si parla di MAMP - in caso di Osx - WAMP in caso di Windows) ma..
• .. ci piace il Free Software ..
• .. il 90% dei server online usa Linux come SO ..
quindi LAMP sia!
Nello specifico faremo riferimento alla distribuzione Ubuntu liberamente
scaricabile dal sito www.ubuntu.it
Cosa è un “Web server” e come funziona?
“Che cosa rende filosofi? Il coraggio di non serbare alcuna domanda
nel cuore.” - Schopenhauer
Un Web Server (noi useremo Apache) è un “servizio” installato su di un
computer e che si occupa di:
• rendere accessibili in rete alcuni file presenti sul pc (le pagine del
nostro sito);
• servire i visitatori del sito ospitato restituendo tali file una volta che
questi siano stati richiesti.
Database: il backend di un sito dinamico..
“Bisogna avere buona memoria per mantenere le promesse.” Nietzsche
In un sito dinamico le pagine sono create al momento della richiesta da
parte del visitatore: il loro contenuto è costruito a partire dalle
informazioni salvate su un database.
Prepariamo il tutto...
“Allora tutto il film della mia vita mi è passato davanti agli occhi in un
momento! E io non ero nel cast!” - Woody Allen
L’adozione di Ubuntu rende la fase di installazione di Apache, PHP,
mysql un operazione estremamente banale:
1
Apriamo il “Gestore pacchetti” nel menù
“Sistema−→Amministrazione”
2
Cerchiamo, e selezioniamo per l’installazione i pacchetti: php5,
mysql-client-5.1, mysql-server, phpmyadmin, apache2
3
Installiamo.
Ci verranno chiesti un nome utente ed una password per mysql e
phpmyadmin: forniamo tali credenziali impostando valori che siamo sicuri
di ricordare.
Come? Dove? Perché?
“È meglio conoscere qualcosa delle domande, che tutto delle risposte.”
- Thurber
Per controllare che Apache sia installato correttamente aprite un browser
e immettete come URL:
• http://localhost/
Dovrebbe comparire una pagina con scritto “It Works!”: in tale caso
complimenti tutto sembra funzionare a modo!
Apache utilizza come root path per i file da ricercare
• /var/www/ su cui hanno permessi di scritura solo gli utenti
appartenenti al gruppo Apache. Potete quindi:
• cambiare i diritti di scrittura sulla cartella (fatelo SOLO quando
lavorate in locale sul vostro pc!!)
• oppure aggiungere il vostro utente al gruppo Apache (se non ne
facesse già parte)
• ... altre alternative che non vedremo.
Ed ora: PHP!
“All’inizio era il Verbo.. il complemento oggetto venne molto tempo
dopo.” - Giobbe Covatta
Per programmare in PHP può essere utilizzato un qualsiasi editor di testo
(oltre ad ambienti di sviluppo dedicati e non): noi useremo gedit.
• è didatticamente semplice;
• è preinstallato in quasi tutte le distribuzioni GNU/Linux;
• fornisce un minimo di syntax hilithening;
• non è complesso da usare.
Un inizio classico: “Ciao mondo!”
“Ogni stecca ripetuta due volte è l’inizio di un arrangiamento.” - Frank
Zappa
Uno script PHP è salvato in un file di testo avente come estensione .php.
Nel nostro caso avremo:
<?php
echo “Ciao mondo!”;
?>
Salviamo il tutto in un file dal nome index.php all’interno della root del
nostro web server (/etc/www/):
la pagina sarà quindi accedibile all’indirizzo:
http://localhost/index.php
Cosa è un programma?
“L’essere è il non essere non è” - Parmenide
Un programma è “qualcosa” che presi in ingresso dei dati esegue delle
computazioni sugli stessi (non necessariamente modificandoli) e
restituisce un risultato (visibile o invisibile all’utente).
Ogni programma che si rispetti è definito da alcuni componenti:
• i dati su cui questo si troverà a operare,
• l’algoritmo che implementa.
Variabili: lo “stato” del programma
“Essere o non essere, questo è il problema” - William Shakespeare
(Amleto)
I dati su cui opera un programma sono (in qualche modo) salvati nella
memoria del computer e possono essere acceduti tramite le “variabili”.
Ogni variabile identifica uno spazio di memoria; ciascuna variabile ha un
nome, definito dal programmatore, che viene usato per accedere tale
particolare spazio di memoria.
In ogni preciso istante lo stato di un programma può essere univocamente
determinato dalla conoscenza di:
• valore delle variabili
• punto di esecuzione dell’algoritmo
Tipizzazione questa sconosciuta...
�
�
�
“ τ → τ = (int × τ ) → int non è soddisfacibile” - Il Nonno di Heidi
In molti linguaggi (C, Java, Python..) ogni variabile ha associato un tipo
che specifica quale sia il suo possibile contenuto (int, float, String,
boolean...).
In PHP questo non avviene: all’interno dello spazio riferito da un nome di
variabile possono essere memorizzati indistintamente valori di qualsiasi
tipo.
<?php
$nome = “Giulio”;
$temperatura = 20;
echo “Ciao “ . $nome . ” mi hanno detto che oggi ci sono “ .
$temperatura . ”°C”;
?>
Cosa è un Algoritmo?
“Un giorno le macchine riusciranno a risolvere tutti i problemi, ma mai
nessuna di esse potrà porne uno.” - Albert Einstein
“Un algoritmo è un procedimento definito da un numero
finito di passi discreti ed effettivi che dati dei valori in input
produce un risultato in output.”
• Finito: espresso da un numero definito di istruzioni
• Discreti ed Effettivi: ogni istruzione ha una terminazione (è
“discreta”) e causa una modifica dello stato (è “effettiva”)
Algoritmo: una rappresentazione grafica
“I’m not insane... my mom had me tested!” - Sheldon Cooper
Programmazione Imperativa
“Agisci in modo che la massima della tua morale possa essere innalzata
a legge universale.” - Immanuel Kant (Imperativo categorico)
E’ possibile dividere i linguaggi di programmazione in 2 “famiglie”:
• I linguaggi imperativi: in cui si definisce passo passo l’algoritmo che
il programma deve eseguire;
• I linguaggi dichiarativi: in cui si dichiarano delle “regole” e si lascia al
programma l’onere di applicarle.
PHP è un linguaggio di tipo Imperativo orientato agli Oggetti.
Controllo del Flusso: Condizionali
“Se non incontri mai qualcosa che ti offende, non vivi in una società
libera.” - Daniele Luttazzi
If...
“Se riesci a mantenere la calma quando tutti intorno a te la stanno
perdendo...” - Joseph Rudyard Kipling
Il costrutto di scelta consente di diversificare l’operato del programma in
base a condizioni prestabilite
if( <condizione> ) {
<codice>
} elseif (<condizione>) {
<codice>
} else {
<codice>
}
Switch
“n un minuto c’è il tempo per decisioni e scelte che il minuto
successivo rovescerà.” - Thomas Stearns Eliot
Il costrutto Switch permette di diversificare l’operato del programma al
valore dell’espressione testata
switch (<condizione>) {
case <valore1>: <codice> break;
case <valore2>: <codice> break;
....
default: <codice>; break;
}
Controllo del Flusso: Cicli
“Repetita iuvant”
While: un ciclo potenzialmente infinito
“Fratelli! Ciò che facciamo in vita, riecheggia nell’eternità.” - Massimo
Decimo Meridio
Il costrutto While permette di ripetere un blocco di codice finché la
condizione testata è soddisfatta.
while (<condizione>) {
<codice>
<aggiornamento condizione>
}
For: contiamo i passi...
“Lı̀, sempre lı̀, lı̀ nel mezzo, finché ce n’hai stai lı̀.” - Luciano Ligabue
Il costrutto For permette di ripetere un blocco di codice per un numero
prestabilito di volte.
for (<inizializzazione contatore>; <condizione>;
<aggiornamento contatore>) {
<codice>
}