1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.23 Maintainer: cortesi Status: ready -->
<chapter id="language.constants">
<title>Costanti</title>
<simpara>
Una costante un identificatore (nome) per un valore. Come si pu intuire,
tale valore non pu cambiare durante l'esecuzione dello script
(le costanti <constant>__FILE__</constant> e
<constant>__LINE__</constant> sono l'unica eccezione). Una costante
"case-sensitive" per default. convenzione comune che i nomi di costante
siano sempre maiuscoli.
</simpara>
<para>
In PHP il nome di una costante segue le regole di qualsiasi "etichetta".
Un nome di costante valido inizia con una lettera o underscore, seguita
da un numero qualsiasi di caratteri alfanumerici o underscore.
L'espressione regolare che esprime questa convenzione :
<literal>[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*</literal>
<!-- TODO: Example of valid & invalid constant names -->
</para>
<note>
<simpara>
In questo contesto una lettera a-z, A-Z e i caratteri ASCII
dal 127 al 255 (0x7f-0xff).
</simpara>
</note>
<simpara>
Una costante sempre globale.
</simpara>
<sect1 id="language.constants.syntax">
<title>Sintassi</title>
<simpara>
possibile definire una variabile utilizzando la funzione
<function>define</function>. Una volta definita una variabile,
non possibile cambiarne il valore o eliminarla.
</simpara>
<simpara>
Le costanti possono contenere solo dati di tipo scalare
(<type>boolean</type>, <type>integer</type>,
<type>double</type> and <type>string</type>).
</simpara>
<simpara>
Per ottenere il valore di una costante sufficiente specificarne il nome.
A differenza delle variabili, <emphasis>non</emphasis> necessario
anteporre il simbolo <literal>$</literal> al nome di una variabile.
Si pu anche utilizzare la funzione <function>constant</function>,
per leggere il valore di una costante, nel caso in cui se ne ottenga
dinamicamente il nome.
Si utilizzi <function>get_defined_constants</function> per ottenere
una lista delle variabili definite.
</simpara>
<note>
<simpara>
Costanti e variabili (globali) si trovano in un "namespace" differente.
Questo implica che generalmente &true; e
<varname>$TRUE</varname> sono differenti.
</simpara>
</note>
<simpara>
Se si utilizza il nome di una costante che non definita, PHP assume che
detto valore sia il nome della costante stessa. Quando ci accade
PHP lo seganala il problema con con un <link linkend="features.error-handling">notice</link>.
Per sapere se una costante definita, si pu utilizzare la
funzione <function>defined</function>.
</simpara>
<para>
Di seguito sono riportate le principali differenze dalle variabili:
<itemizedlist>
<listitem>
<simpara>
Le costanti non richiedono il simbolo di dollaro (<literal>$</literal>) anteposto al nome;
</simpara>
</listitem>
<listitem>
<simpara>
Le costanti si possono definire e utilizzare in qualsiasi contesto indipendentemente
dalle regole dello spazio dei nomi;
</simpara>
</listitem>
<listitem>
<simpara>
Le costanti non si possono ridefinire o eliminare una volta che siano
state definite; e
</simpara>
</listitem>
<listitem>
<simpara>
Le costanti possono contenere solo valori scalari.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
<example>
<title>Definizione di costanti</title>
<programlisting>
<![CDATA[
<?php
define("COSTANTE", "Ciao mondo.");
echo COSTANTE; // stampa "Ciao mondo."
echo Costante; // stampa "Costante" e genera una notice.
?>
]]>
</programlisting>
</example>
</para>
</sect1>
<sect1 id="language.constants.predefined">
<title>Costanti predefinite</title>
<para>
Le costanti predefinite (sempre disponibili) sono:
<variablelist>
<varlistentry>
<term>__FILE__ (case-insensitive)</term>
<listitem>
<simpara>
Il nome del file dello script processato. Se usato
in un file che stato incluso tramite le funzioni include e require, allora corrisponde al
nome del file incluso e non al nome del
file genitore.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>__LINE__ (case-insensitive)</term>
<listitem>
<simpara>
Il numero di linea all'interno del file
processato. Se usato in un file che stato incluso tramite le funzioni include
e require, allora corrisponde alla posizione nel file incluso.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>PHP_VERSION</term>
<listitem>
<simpara>
La rappresentazione in formato stringa della versione del motore PHP
attualmente in uso: per esempio '4.1.0'.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>PHP_OS</term>
<listitem>
<simpara>
Il nome del sistema operativo sul quale il motore PHP
in esecuzione. Valori possibili possono essere:
"AIX", "Darwin" (MacOS), "Linux", "SunOS", "WIN32", "WINNT".
Nota: potrebbero essere presenti anche altri valori.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>&true; (case-insensitive)</term>
<listitem>
<simpara>
Un valore &true; (vedere tipo <type>boolean</type>).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>&false; (case-insensitive)</term>
<listitem>
<simpara>
Un valore &false; (vedere tipo <type>boolean</type>).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>&null; (case-insensitive)</term>
<listitem>
<simpara>
Un valore &null; (vedere tipo <type>boolean</type>).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>E_ERROR</term>
<listitem>
<simpara>
Denota un errore differente da un errore di parsing.
Non recuperabile.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>E_WARNING</term>
<listitem>
<simpara>
Denota una condizione dove il PHP sa che c' qualcosa di sbagliato, ma
continua comunque l'esecuzione; Queste possono essere gestite dallo script
stesso. Un esempio pu essere una regexp non valida in
<function>ereg</function>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>E_PARSE</term>
<listitem>
<simpara>
Il parser ha incontrato in uno script una sintassi non valida.
L'errore non recuperabile.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>E_NOTICE</term>
<listitem>
<simpara>
È accaduto qualcosa che pu o pu non essere un errore. L'esecuzione
continua. Esempi includono: usare una stringa non racchiusa da virgolette come indice di un array
o accedere ad una variabile che non stata definita.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>E_ALL</term>
<listitem>
<simpara>
Tutte le costanti E_* racchiuse in una sola. Se usata assieme a
<function>error_reporting</function>, far si che tutti gli errori rilevati
dal PHP siano comunicati.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Le costanti <literal>E_*</literal> sono tipicamente usate in congiunzione alla funzione
<function>error_reporting</function> per impostare il livello di
errori da comunicare. Vedere tutte queste costanti in
<link linkend="features.error-handling">Gestione errori</link>.
<example>
<title>Uso di __FILE__ e __LINE__</title>
<programlisting role="php">
<![CDATA[
<?php
function comunica_errore($file, $linea, $messaggio)
{
echo " avvenuto un errore in $file alla linea $linea: $messaggio.";
}
report_error(__FILE__, __LINE__, "Qualcosa andato storto!");
?>
]]>
</programlisting>
</example>
</para>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|