## page was renamed from Programmazione/PHP #format wiki #LANGUAGE it <
> <> <> = Introduzione = Il linguaggio di programmazione [[https://it.wikipedia.org/wiki/PHP|PHP]] nacque agli albori dell'avvento di internet per lo sviluppo lato server di pagine web [[https://it.wikipedia.org/wiki/Pagina_web_dinamica|dinamiche]]. Fra i software più popolari si ricordano il CMS [[https://it.wordpress.org/|Wordpress]], l'editor wiki [[https://www.mediawiki.org/wiki/MediaWiki|MediaWiki]] e il web framework [[https://laravel.com/|Laravel]]. In questa guida vengono mostrate alcune basi per il suo utilizzo su Ubuntu con un occhio di riguardo ai principianti. Si rimanda alla copiosa documentazione disponibile in rete per uno studio più approfondito. = Installazione = Se quello che si desidera è una semplice piattaforma di test o banalmente muovere i primi passi, è sufficiente [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://php-cgi|php-cgi]]. Questo permetterà di sfruttare un server minimale (non adatto in produzione). In alternativa il pacchetto [[apt://php|php]] darà luogo a un'installazione più completa con svariate dipendenze fra cui il web server '''Apache'''.<
> '''PHP''' è parte del cosiddetto stack [[https://it.wikipedia.org/wiki/LAMP|LAMP]], pertanto la sua installazione è spesso concomitante con l'installazione e configurazione di: * [[Server/Apache|Apache]] web server; * [[Server/MySql|MySql]] database. = Esempi di utilizzo = Una caratteristica particolare di '''php''' (a patto di avere un server web in funzione) è data dal fatto di poterlo utilizzare in modo analogo a quanto avviene per '''Javascript''', cioè inserendo codice attraverso opportuni tag all'interno di documenti '''html''' salvati con estensione `.php`. Tipicamente in ambito produttivo, se è in utilizzo ad esempio il server [[Server/Apache|Apache]] o in locale se è stato ricreato un ambiente di sviluppo ad es. tramite [[Server/Xampp|XAMPP]], i file `.php` vengono salvati in una opportuna directory. Per semplificare viene qui considerato il caso di utilizzo di '''php-cgi''', in grado di attivare funzionalità web server minimali. In questo caso i file possono essere salvati dove torna più comodo. == Hello world == 0. Creare nella propria '''Home''' il file `game.php` con al suo interno un'ossatura di codice '''html''':{{{ Game }}}All'interno dei tag '''''' spicca il tag '''''' con al suo interno il codice per stampare la stringa ''ciao''. 0. Avviare il server minimale digitando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ php -S localhost:8000 }}} 0. Aprire nel proprio browser la pagina http://localhost:8000/game.php 0. Se la pagina aperta mostra la scritta:{{{ ciao }}}tutto è andato a buon fine. In caso contrario nel terminale apparirà un messaggio di errore. == Lancio di un dado == Viene qui simulato il lancio di un dado. Questo metterà in luce alcuni aspetti della programmazione in '''php'''. 0. Sostituire all'interno del tag '''''' il codice inserito in precedenza con il seguente:{{{

Tira il dado

$numero
Hai vinto! :)"; } else { echo "$numero
..riprova! Avrai più fortuna ;)
"; } ?>

Fai clic sul pulsante refresh 🔁️ oppure premi il tasto F5 per lanciare nuovamente il dado.

}}} 0. Salvare il file `game.php` e ricaricare la pagina http://localhost:8000/game.php Segue una spiegazione del codice: * A livello di codice html per completezza è stato inserito il titolo "''Tira il dado''" tramite tag '''

'''. * Nel tag '''''' è stata impostata la variabile '''$numero''' alla quale è stato assegnato un valore casuale variabile fra '''1''' e '''6'''. * Attraverso il costrutto '''if/else''' viene valutato il valore di '''$numero'''. Se risulta essere uguale a 6, apparirà la scritta:{{{ Hai vinto! :) }}}in caso contrario:{{{ ..riprova! Avrai più fortuna ;) }}}{{{#!wiki note Da notare come in una stringa di testo delimitata dalle virgolette "..." sia le '''variabili''' php sia i '''tag''' html vengano automaticamente riconosciuti. In molti linguaggi l'interpolazione di elementi interni a una stringa può essere ben più macchinosa. }}} 0. In fondo, internamente al tag paragrafo '''

''', si indica al giocatore come generare un nuovo lancio del dado tramite refresh della pagina. == Header condiviso == Fin qua è stata creata la pagina '''game.php'''. Si vuole andare oltre, creando una seconda pagina '''home.php''' facendo in modo che: * condividano la parte superiore della pagina, dal tag '''''' fino ''''''; * condividano pure un menù basilare in modo che da ogni pagina sia possibile richiamare l'altra. Considerando le due pagine come facenti parte di un unico sito, alcune parti dovranno essere uguali come tipicamente avviene per la parte alta di un sito (''header'') in cui sono inseriti logo, menù, eventuale immagine di sfondo, ecc. Lo stesso vale per il cosiddetto ''footer'' (la parte bassa della pagina) che però qui viene omesso per brevità. Per evitare di dover ripetere il codice su ogni singola pagina, la parte interessata viene scritta su di un file a se stante '''header.php''' e richiamato attraverso la funzione '''include()''' da ogni singola pagina. 0. Creare il file '''header.php''' con all'interno il seguente codice:{{{ <?php echo $titolo_pagina ?>

Home - Game
}}} * Da notare che fra i tag '''''' appare il codice php '''echo $titolo_pagina''' (questo per impostare una variabile generica). Quando sulle pagine '''home.php''' e '''game.php''' verrà richiamato il codice soprastante, ognuna di esse imposterà il proprio nome alla variabile '''$titolo_pagina'''. * Dopo il tag '''<body>''' appare il menù circondato dai tag '''<div>'''. 0. Creare il file '''home.php''' con il seguente codice interno:{{{ <?php $titolo_pagina = "Home"; include('header.php'); ?> <h1>Salve!</h1> <p> Questa è una pagina di prova per scoprire le basi di <b> <a href="https://it.wikipedia.org/wiki/PHP">php</a></b>. </p> </body> </html> }}} * Nel tag '''<?php ?>''' viene assegnato il titolo della pagina alla variabile '''$titolo_pagina'''. * La funzione '''include()''' richiama tutto il contenuto del file `header.php`. * Più in basso è stato aggiunto codice html con del contenuto per la hompage. 0. Aprire nel browser la pagina http://localhost:8000/home.php <<BR>>Nell'immagine si possono notare il menù con i link alle due pagine (Home e Game) e nel tab è stato impostato il titolo '''Home''': <<Immagine(./home.png,450,center)>> 0. Aggiornare a sua volta il codice del file '''game.php''' sostituendogli il seguente codice:{{{ <?php $titolo_pagina = "Game"; include('header.php'); ?> <h1>Tira il dado</h1> <?php $numero = random_int(1, 6); if ($numero == 6) { echo "<b>$numero<br>Hai vinto! :)</b>"; } else { echo "<b>$numero<br>..riprova! Avrai più fortuna ;)</b>"; } ?> <p> Fai clic sul pulsante refresh 🔁️ oppre premi il tasto <b>F5</b> per lanciare nuovamente il dado. </p> </body> </html> }}} 0. Aprire nel browser la pagina http://localhost:8000/game.php <<BR>>Qui un'immagine della pagina web che sfrutta il medesimo menù e con il relativo titolo mostrato sul tab: <<Immagine(./game.png,450,center)>> == Considerazioni == L'esempio mostrato ha i suoi limiti. Supponendo ad esempio di dover creare un sito in stile "lungo catalogo", diventa dispendioso dover creare a mano ogni singola pagina. Qualora si decidesse di applicare una modifica alla struttura base di una pagina, andrebbe modificato ogni singolo file. Con i moderni web [[https://it.wikipedia.org/wiki/Framework_per_applicazioni_web|framework]] il tutto si riduce alla creazione di un ''template'' e sulla base di esso ogni pagina viene creata sul momento in modo tale che ogni sua sezione viene completata da dati estratti da file statici, database, ecc. In caso di modifiche alla struttura, sarà sufficiente agire solo sul template. Pertanto l'esempio mostrato perderà validità con l'aumentare delle dimensioni e delle interazioni di un sito. Tuttavia lo scopo principale era di mostrare alcune caratteristiche peculiari di '''PHP''', un linguaggio capace di integrarsi con codice html senza il bisogno di elaborate installazioni/configurazioni permettendo di ottenere in modo pratico un ambiente di sviluppo per muovere i primi passi nello studio del linguaggio. = Ulteriori risorse = * [[https://www.php.net/|Sito web ufficiale]] * [[https://it.wikipedia.org/wiki/PHP|Voce enciclopedica]] * [[https://www.w3schools.com/php/|Tutorial w3schools]] ---- CategoryProgrammazione