Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions language/types/enumerations.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f4609f913fe6bf4a8b41328df9366726208b7e33 Maintainer: lacatoire Status: ready -->
<sect1 xml:id="language.types.enumerations">
<title>Enumerazioni</title>
<?phpdoc print-version-for="enumerations"?>

<sect2 xml:id="language.types.enumerations.basics">
<title>Enumerazioni di base</title>

<para>
Le enumerazioni sono un livello restrittivo sopra le classi e le costanti di classe,
pensato per fornire un modo di definire un insieme chiuso di valori possibili per un tipo.
</para>

<informalexample>
<programlisting role="php">
<![CDATA[
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}

function do_stuff(Suit $s)
{
// ...
}

do_stuff(Suit::Spades);
?>
]]>
</programlisting>
</informalexample>

<simpara>
Per una trattazione completa, vedere il
capitolo sulle <link linkend="language.enumerations">Enumerazioni</link>.
</simpara>

</sect2>

<sect2 xml:id="language.types.enumerations.casting">
<title>Cast</title>

<para>
Se un <type>enum</type> viene convertito in un <type>object</type>, non viene
modificato. Se un <type>enum</type> viene convertito in un <type>array</type>,
viene creato un array con una singola chiave <literal>name</literal> (per le enum Pure) o
un array con entrambe le chiavi <literal>name</literal> e <literal>value</literal>
(per le enum Backed). Tutti gli altri tipi di cast produrranno un errore.
</para>
</sect2>
</sect1>

<!-- 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:"~/.phpdoc/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
-->
68 changes: 68 additions & 0 deletions language/types/iterable.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: e587d0655e426f97b3fcb431453da5030e743b23 Maintainer: lacatoire Status: ready -->
<sect1 xml:id="language.types.iterable">
<title>Iterabili</title>

<para>
<type>Iterable</type> è un alias di tipo incorporato in fase di compilazione per
<!-- Need to improve rendering of free-standing type elements in PhD
<type class="union"><type>array</type><type>Traversable</type></type>.
-->
<literal>array|Traversable</literal>.
Dalla sua introduzione in PHP 7.1.0 e prima di PHP 8.2.0,
<type>iterable</type> era un pseudo-tipo incorporato che fungeva da
alias di tipo sopra menzionato e poteva essere utilizzato come dichiarazione di tipo.
Un tipo iterable può essere utilizzato in &foreach; e con
<command>yield from</command> all'interno di un
<link linkend="language.generators">generatore</link>.
</para>

<note>
<para>
Le funzioni che dichiarano iterable come tipo di ritorno possono anche essere <link
linkend="language.generators">generatori</link>.

<example>
<title>
Esempio di tipo di ritorno iterable di un generatore
</title>
<programlisting role="php">
<![CDATA[
<?php

function gen(): iterable {
yield 1;
yield 2;
yield 3;
}

foreach(gen() as $value) {
echo $value, "\n";
}
?>
]]>
</programlisting>
</example>
</para>
</note>
</sect1>
<!-- 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:"~/.phpdoc/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
-->
56 changes: 56 additions & 0 deletions language/types/relative-class-types.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 161dde4fe721309398dd324edbf02aec409f127b Maintainer: lacatoire Status: ready -->
<sect1 xml:id="language.types.relative-class-types">
<title>Tipi relativi alle classi</title>

<para>
Queste dichiarazioni di tipo possono essere utilizzate solo all'interno delle classi.
</para>

<sect2 xml:id="language.types.relative-class-types.self">
<title><type>self</type></title>
<para>
Il valore deve essere un'&instanceof; della stessa classe in cui
viene utilizzata la dichiarazione di tipo.
</para>
</sect2>

<sect2 xml:id="language.types.relative-class-types.parent">
<title><type>parent</type></title>
<para>
Il valore deve essere un'&instanceof; di una classe genitore
della classe in cui viene utilizzata la dichiarazione di tipo.
</para>
</sect2>

<sect2 xml:id="language.types.relative-class-types.static">
<title>static</title>
<para>
<type>static</type> è un tipo utilizzabile solo come tipo di ritorno che richiede
che il valore restituito sia un'&instanceof; della stessa classe su cui
il metodo viene chiamato.
Disponibile a partire da PHP 8.0.0.
</para>
</sect2>

</sect1>
<!-- 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:"~/.phpdoc/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
-->
68 changes: 68 additions & 0 deletions language/types/resource.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 95bdd6883b5dde9504701777ba81b3c5f15df52b Maintainer: lacatoire Status: ready -->
<sect1 xml:id="language.types.resource">
<title>Risorse</title>

<para>
Una <type>resource</type> è una variabile speciale, che contiene un riferimento a una
risorsa esterna. Le risorse vengono create e utilizzate da funzioni speciali. Vedere
l'<link linkend="resource">appendice</link> per un elenco di tutte queste
funzioni e i relativi tipi di <type>resource</type>.
</para>

<para>
Vedere anche la funzione <function>get_resource_type</function>.
</para>

<sect2 xml:id="language.types.resource.casting">
<title>Conversione in resource</title>

<para>
Poiché le variabili <type>resource</type> contengono handle speciali verso file aperti,
connessioni a database, aree canvas di immagini e simili, la conversione in una
<type>resource</type> non ha senso.
</para>
</sect2>

<sect2 xml:id="language.types.resource.self-destruct">
<title>Liberare le risorse</title>

<para>
Grazie al sistema di conteggio dei riferimenti che fa parte di Zend Engine,
una <type>resource</type> senza più riferimenti viene rilevata
automaticamente e liberata dal garbage collector. Per questo motivo, è
raramente necessario liberare la memoria manualmente.
</para>

<note>
<simpara>
Le connessioni persistenti al database sono un'eccezione a questa regola. Esse
<emphasis>non</emphasis> vengono distrutte dal garbage collector. Vedere la
sezione sulle <link linkend="features.persistent-connections">connessioni
persistenti</link> per maggiori informazioni.
</simpara>
</note>

</sect2>
</sect1>

<!-- 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:"~/.phpdoc/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
-->
48 changes: 48 additions & 0 deletions language/types/singleton.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f908fff129bcd8ec1605658e06457cb04e5b2b51 Maintainer: lacatoire Status: ready -->
<sect1 xml:id="language.types.singleton">
<title>Tipi singleton</title>

<para>
I tipi singleton sono quelli che ammettono un solo valore.
PHP supporta due tipi singleton:
<type>false</type> a partire da PHP 8.0.0 e <type>true</type>
a partire da PHP 8.2.0.
</para>

<warning>
<simpara>
Prima di PHP 8.2.0 il tipo <type>false</type>
poteva essere utilizzato solo come parte di un
<link linkend="language.types.type-system.composite.union">tipo union</link>.
</simpara>
</warning>

<note>
<simpara>
Non è possibile definire tipi singleton personalizzati. Si consiglia di utilizzare
un'<link linkend="language.types.enumerations">enumerazione</link> in alternativa.
</simpara>
</note>

</sect1>
<!-- 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:"~/.phpdoc/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
-->