Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 8 di 50
  • livello avanzato
Indice lezioni

Le costanti

Il ruolo delle costanti nelle applicazioni scritte in PHP, le loro differenze sintattiche e funzionali con variabili e proprietà e il loro utilizzo dalle basi fino all'impiego alla loro adozione all'interno delle classi nella programmazione orientata agli oggetti.
Il ruolo delle costanti nelle applicazioni scritte in PHP, le loro differenze sintattiche e funzionali con variabili e proprietà e il loro utilizzo dalle basi fino all'impiego alla loro adozione all'interno delle classi nella programmazione orientata agli oggetti.
Link copiato negli appunti

In PHP, come in altri linguaggi di sviluppo e programmazione, è possibile definire delle costanti, ovvero dei valori fissi che non possono cambiare e vengono quindi mantenuti per tutta la durata dello script o dell'applicazione. Rispetto alle variabili, dalle quali si differenziano sia sintatticamente che funzionalmente, le costanti devono rispettare le seguenti regole:

  • il nome delle costanti non inizia mai con il simbolo $, ma deve sempre iniziare con una lettera o con un underscore, seguita da caratteri alfanumerici o underscore;
  • esse non vengono definite mediante assegnazione, ma tramite la funzione define(), quest'ultima accetta due parametri: il nome della costante e il valore da associare ad essa;
  • sono case-sensitive, per un fattore di consuetudine nella programmazione, il nome di una costante è sempre maiuscolo;
  • i valori ammessi per le costanti devono essere di tipo scalare (quindi integer, float, string o boolean) o null;
  • la visibilità delle costanti è globale. Possono essere utilizzate in qualsiasi punto del programma;
  • come anticipato, una volta definite non possono essere modificate.

Le costanti sono utilizzate, ad esempio, nei file di configurazione, dove le stesse conterranno le informazioni necessarie per la connessione ad un database, ma gli ambiti di adozione sono molteplici; di seguito un esempio riguardante la definizione e l'utilizzo di una costante (SITE):

<?php
	define("SITE", "Html.it");
	echo SITE; // stampa "Html.it"
	echo Site; // genera una notifica come per esempio: notice: Use of undefined constant Site - assumed 'Site' in C:\xampp\htdocs\temp\test.php on line 4
?>

È possibile visualizzare tutte le costanti utilizzate tramite la funzione get_defined_constants():

<?php
	define("SITE", "Html.it");
	print_r(get_defined_constants(true));
?>

analogamente è possibile verificare se una costante è stata definita:

<?php
	if(defined("SITE")){
		echo "Costante definita";
	}
?>

Le costanti predefinite

Le costanti predefinite, fornite dal core PHP o dai suoi moduli (estensioni), sono utili per accedere a informazioni (di sola lettura) in qualsiasi script eseguito. A differenza delle costanti normali, le quali si definiscono con define(), le costanti predefinite hanno un nome che richiama la libreria associata.

Ad esempio, le costanti per la gestione degli errori (Error Handling), iniziano tutte con E_* e sono utilizzate insieme alla funzione error_reporting() per impostare il livello di errori da visualizzare.

Di seguito, un esempio di alcune costanti predefinite (costanti magiche) messe a disposizione da PHP:

<?php
	echo "la directory e il nome del file: " . __FILE__;
	// stampa: la directory e il nome del file: C:\xampp\htdocs\temp\test.php
	echo "la directory di questo file: " . __DIR__;
	// stampa: la directory di questo file: C:\xampp\htdocs\temp
	echo "linea numero " . __LINE__ . ".\n";
	// stampa la linea corrente del file
?>

Le costanti di classe

A partire da PHP 5, è possibile definire, tramite la parola chiave const seguita dal nome e dal valore della costante stessa, una costante all'interno di una classe.

A differenza delle proprietà e dei metodi, le costanti, appartengono alla classe e non alle sue istanze. Quindi, per riferirsi alle costanti dall'interno della classe non è possibile utilizzare la keyword $this, né si può ricorrere all'operatore di deferenziamento ("->") per riferirsi dall'esterno.

<?php
	class Sample {
		// costanti
		const NERO = "Nero";
		const AZZURRO = "Azzurro";	
		public function getConsts() {
			echo "<br />" . " Il valore contenuto nella costante NERO: " . self::NERO;
			echo "<br />" . " Il valore contenuto nella costante AZZURRO: " . Sample::AZZURRO;
		}
}			
	$myClass = new Sample();
	// stampa...
	// Il valore contenuto nella costante NERO: Nero
	// Il valore contenuto nella costante AZZURRO: Azzurro
	$myClass->getConsts();
	// stampa Nero
	echo "<br />" . Sample::NERO;	
	// errore - non è possibile accedere al valore di una costante tramite le istanze della classe
	echo "<br />" . $myClass::A;
?>

In questo esempio, abbiamo visto come accedere alla costante sia all'interno del metodo getConsts() tramite la parola chiave self seguita dall'operatore di risoluzione di scope (::)

<?php 
	public function getConsts() {
		echo "<br />" . " Il valore contenuto nella costante NERO: " . self::NERO;
		echo "<br />" . " Il valore contenuto nella costante AZZURRO: " . Sample::AZZURRO;
	}	
?>

sia tramite il nome della classe seguito dall'operatore di risoluzione di scope

<?php
	echo MyClass::A;
?>

Conclusioni

Nella prossima lezione, affronteremo le strutture complesse che sono formate dalla combinazione di più classi che prendono il nome di gerarchie di classi, ed osserveremo come sia possibile condividere informazioni e risorse per creare applicazioni modulari.

Ti consigliamo anche