PHP Conference Nagoya 2025

Introduzione

Ogni singola espressione in PHP ha uno dei seguenti tipi predefiniti a seconda del suo valore:

PHP è un linguaggio tipizzato dinamicamente, il che significa che per impostazione predefinita non è necessario specificare il tipo di una variabile, poiché questo verrà determinato in fase di esecuzione. Tuttavia, è possibile tipizzare staticamente alcuni aspetti del linguaggio tramite l'uso delle dichiarazioni dei tipi.

I tipi limitano il genere di operazioni che possono essere eseguite su di essi. Tuttavia, se un'espressione/variabile viene utilizzata in un'operazione che il suo tipo non supporta, PHP tenterà di effettuare il type juggle del valore in un tipo che supporta l'operazione. Questo processo dipende dal contesto in cui viene utilizzato il valore. Per ulteriori informazioni, vedere la sezione Type Juggling.

Suggerimento

Anche le tabelle di confronto dei tipi possono essere utili, in quanto sono presenti vari esempi di confronto tra valori di tipi diversi.

Nota: È possibile forzare la valutazione di un'espressione in un certo tipo utilizzando un cast di tipo. Una variabile può anche essere convertita sul posto usando la funzione settype() su di essa.

Per controllare il valore e il tipo di un' espressione, si usa la funzione var_dump(). Per recuperare il tipo di un' espressione, si usa la funzione get_debug_type(). Tuttavia, per controllare se un'espressione è di un certo tipo si usano invece le funzioni is_type.

<?php
$a_bool
= true; // un booleano
$a_str = "foo"; // una stringa
$a_str2 = 'foo'; // una stringa
$an_int = 12; // un intero

echo get_debug_type($a_bool), "\n";
echo
get_debug_type($a_str), "\n";

// Se è un intero, incrementalo di quattro
if (is_int($an_int)) {
$an_int += 4;
}
var_dump($an_int);

// Se $a_bool è una stringa, stampala a video
if (is_string($a_bool)) {
echo
"Stringa: $a_bool";
}
?>

Output of the above example in PHP 8:

bool
string
int(16)

Nota: Prima di PHP 8.0.0, dove get_debug_type() non è disponibile, è possibile utilizzare la funzione gettype(). Tuttavia, non usa i nomi dei tipi canonici.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top