Articles in category: PHP Internals

Lorenzo Fontana Lorenzo Fontana avatar

2 minute read

PHP, fin dalla versione 5.2.0, introduce gli oggetti \DateTime per operare con date ed intervalli, fornendo finalmente un alternativa alle vecchie funzioni procedurali.

Recentemente mi sono reso conto di uno strano comportamento che si verifica quando vengono chiamate var_dump, print_r, var_export o debug_zval_dump su un istanza di \DateTime.

Considerando il seguente codice e il suo output:

$date = new \DateTime();
var_dump(isset($date->date)); // OUTPUT: bool(false)

ci rendiamo conto del fatto che non esiste alcuna proprietà $date all’interno dell’istanza di \DateTime.

Lorenzo Fontana Lorenzo Fontana avatar

2 minute read

Assegnare valori alle variabili è sicuramente l’operazione più comune all’interno di uno script PHP. Ma come vengono conservate queste informazioni dall’interprete? Vediamolo assieme!

L’unità fondamentale di storage dei dati in PHP è la Zend Value (zval). Si tratta di una struct definita alla linea 334 di zend.h, la riporto qui di seguito per commentarne le proprietà.