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 add a note

User Contributed Notes 1 note

up
0
kuzawinski dot marcin_NOSPAM at gmail dot com
4 years ago
No, despite description here a `callable` still is not a a full-fledged primitive type in PHP.

<?php

function testFunc() { }

class
testClass {
   
    public function
__invole() { }
   
    public static function
testStaticMethod() { }
   
    public function
testMethod() { }
}

$o = new testClass();
$lambda = function() { };

$c1 = 'testFunc';
$c2 = ['testClass', 'testStaticMethod'];
$c3 = [$o, 'testMethod'];
$c4 = $lambda;
$c5 = $o;

var_dump(is_callable($c1));  // TRUE
var_dump(is_callable($c2));  // TRUE
var_dump(is_callable($c3));  // TRUE
var_dump(is_callable($c4));  // TRUE
var_dump(is_callable($c5));  // TRUE

var_dump(gettype($c1)); // string(6) "string"
var_dump(gettype($c2)); // string(5) "array"
var_dump(gettype($c3)); // string(5) "array"
var_dump(gettype($c4)); // string(6) "object"
var_dump(gettype($c5)); // string(6) "object"

?>
To Top