/ //

PHP da linea di comando - GM Multimedia

Vai ai contenuti

Menu principale:

PHP da linea di comando

Guida PHP



PHP da linea di comando
         PHP non è solo un linguaggio di sviluppo per il Web e può essere utilizzato anche come soluzione per lo scripting da riga di comando.
         Prima di analizzare le modalità d’impiego e le sue potenzialità dobbiamo assicurarci che l’eseguibile sia correttamente raggiungibile dalla nostra shell. Apriamo quindi il Terminale e proviamo a lanciare il comando:
				php -v
         In base alla versione di PHP che abbiamo installato sulla nostra macchina otterremo un risultato simile al seguente:
				~ → php -v
				PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
				Copyright (c) 1997-2017 The PHP Group
				Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
         Possiamo notare che i destinatari non sono solo indirizzi email, questo perché il campo $to è compatibile con lo standard RFC 2822 e quindi supporta i seguenti formati:
  • user@example.com
  • user@example.com, anotheruser@example.com
  • User <a href=”mailto:user@example.com”>user@example.com</a>
  • User <a href=”mailto:user@example.com”>user@example.com</a>, Another User <a href=”mailto:anotheruser@example.com”>anotheruser@example.com</a>
         Il risultato dell'invio sarà:
				php -r 'echo "hello world";'
				hello world%


Esecuzione del codice dallo standard input
         Supponendo di avere dei comandi che rilasciano in output codice PHP, questo può essere fornito direttamente all’eseguibile del linguaggio tramite pipe (|),
				echo "hello world" | php
				hello world%


Esecuzione di script da file
         Qualsiasi file PHP può essere eseguito direttamente da Terminale attraverso il comando:
				php file.php
         Al file è possibile passare anche dei parametri che possono essere utilizzati dallo script.
         Analizziamo un esempio pratico così da semplificarne la comprensione. Supponiamo di dover realizzare uno script che ritaglia una porzione di immagine e la salva all’interno di una directory. Questo script potrebbe prendere in input il path dell’immagine e la directory di destinazione.
         Lo script potrebbe quindi essere richiamato in questo modo:
				php resize.php /path/to/image.jpg /save/to/directory/
         Per recuperare i parametri all’interno del nostro script PHP mette a disposizione 2 variabili globali:
  1. $argv: un array che contiene gli argomenti;
  2. $argc: un intero che indica il numero di argomenti contenuti nell’array $argv.
         Creiamo un file resize.php in cui per iniziare facciamo stampare gli argomenti passati in ingresso:
				<?php
				var_dump($argc, $argv);
         Lanciamo lo script, il risultato che otterremo è il seguente:
				php resize.php /path/to/image.jpg /save/to/directory/
				int(3)
				array(3) {
				  [0]=>
				  string(10) "resize.php"
				  [1]=>
				  string(18) "/path/to/image.jpg"
				  [2]=>
				  string(19) "/save/to/directory/"
				}
         Possiamo notare che il primo elemento nell’array è il nome del file, questo viene inserito automaticamente da PHP. Gli altri 2 sono esattamente i parametri che abbiamo fornito noi.
         Iniziamo quindi a realizzare lo script, come prima cosa facciamo il parsing dei parametri per ottenere il nome dell’immagine e la directory in cui salvarla:
				if ($argc != 3) {
				    die('Numero di parametri non corretto');
				}
				list($scriptName, $imagePath, $destinationPath) = $argv;
         Attraverso il costrutto list andiamo a salvare i parametri all’interno di alcune variabili che utilizzeremo nello script.           Prima di procedere verifichiamo che il file esista e che la directory di destinazione sia scrivibile e poi eseguiamo il codice per il crop:
				$handle = imagecreatefromjpeg($imagePath);
				$size = min(imagesx($handle), imagesy($handle));
				$imageCropped = imagecrop($handle, [
				    'x' => 0,
				    'y' => 0,
				    'width' => $size,
				    'height' => $size,
				]);
				$destinationImage = sprintf('%s/image_%s.jpg', $destinationPath, rand(0, 100));
				imagejpeg($imageCropped, $destinationImage);
         Lo script completo è il seguente:
				<?php
				if ($argc != 3) {
				    die('Numero di parametri non corretto');
				}
				list($scriptName, $imagePath, $destinationPath) = $argv;
				if (!file_exists($imagePath)) {
				    die('Immagine non trovata');
				}
				if (!is_writable($destinationPath)) {
				    die('Directory di destinazione non scrivibile');
				}
				$handle = imagecreatefromjpeg($imagePath);
				$size = min(imagesx($handle), imagesy($handle));
				$imageCropped = imagecrop($handle, [
				    'x' => 0,
				    'y' => 0,
				    'width' => $size,
				    'height' => $size,
				]);
				$destinationImage = sprintf('%s/image_%s.jpg', $destinationPath, rand(0, 100));
				imagejpeg($imageCropped, $destinationImage);
         Abbiamo visto che l’array globale $argv ci permette di creare script anche molto complessi.
         Nel caso volessimo affidarci a qualche libreria che ci semplifica le operazioni di parsing dei parametri in modo da dedicarci solo alla logica del nostro script, possiamo utilizzare la Symfony Console Component.
Visitatori online:
Sei il nostro visitatore n°:
© - Copyright 2015. - Tutti i diritti riservati - G.M. Multimedia
Torna ai contenuti | Torna al menu