From dd39dc2d03663cc86ed28e51e264ae6b71fabcf1 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Thu, 26 Feb 2026 15:39:17 +0100 Subject: [PATCH 1/2] Add Italian translation for OOP files (references, iterations, serialization, object-comparison, final) --- language/oop5/final.xml | 130 ++++++++++++++++++++++++++++ language/oop5/iterations.xml | 105 ++++++++++++++++++++++ language/oop5/object-comparison.xml | 124 ++++++++++++++++++++++++++ language/oop5/references.xml | 87 +++++++++++++++++++ language/oop5/serialization.xml | 112 ++++++++++++++++++++++++ 5 files changed, 558 insertions(+) create mode 100644 language/oop5/final.xml create mode 100644 language/oop5/iterations.xml create mode 100644 language/oop5/object-comparison.xml create mode 100644 language/oop5/references.xml create mode 100644 language/oop5/serialization.xml diff --git a/language/oop5/final.xml b/language/oop5/final.xml new file mode 100644 index 000000000..f8ca3a418 --- /dev/null +++ b/language/oop5/final.xml @@ -0,0 +1,130 @@ + + + + La parola chiave final + + La parola chiave final impedisce alle classi figlie di sovrascrivere un metodo, una proprietà o una costante + anteponendo alla definizione il prefisso final. Se la classe + stessa viene definita come final, non potrà essere estesa. + + + + Esempio di metodi final + + +]]> + + + + + + Esempio di classe final + + +]]> + + + + + Esempio di proprietà final a partire da PHP 8.4.0 + + +]]> + + + + Esempio di costanti final a partire da PHP 8.1.0 + + +]]> + + + + + + A partire da PHP 8.0.0, i metodi privati non possono essere dichiarati final, ad eccezione del costruttore. + + + + + Una proprietà dichiarata private(set) è implicitamente final. + + + + diff --git a/language/oop5/iterations.xml b/language/oop5/iterations.xml new file mode 100644 index 000000000..649eeadf9 --- /dev/null +++ b/language/oop5/iterations.xml @@ -0,0 +1,105 @@ + + + + Iterazione degli oggetti + + + PHP fornisce un modo per definire gli oggetti in modo tale che sia possibile iterare + attraverso un elenco di elementi, ad esempio con un'istruzione &foreach;. Per impostazione predefinita, + tutte le proprietà visibili verranno utilizzate + per l'iterazione. + + + + + Iterazione semplice degli oggetti + + $value) { + print "$key => $value\n"; + } + } +} + +$class = new MyClass(); + +foreach($class as $key => $value) { + print "$key => $value\n"; +} +echo "\n"; + + +$class->iterateVisible(); + +?> +]]> + + &example.outputs; + + value 1 +var2 => value 2 +var3 => value 3 + +MyClass::iterateVisible: +var1 => value 1 +var2 => value 2 +var3 => value 3 +protected => protected var +private => private var +]]> + + + + + + Come mostra l'output, il &foreach; ha iterato attraverso tutte le + proprietà visibili a cui era possibile + accedere. + + + + &reftitle.seealso; + + + Generatori + Iterator + IteratorAggregate + Iteratori SPL + + + + + + diff --git a/language/oop5/object-comparison.xml b/language/oop5/object-comparison.xml new file mode 100644 index 000000000..ba676b16e --- /dev/null +++ b/language/oop5/object-comparison.xml @@ -0,0 +1,124 @@ + + + + Confronto tra oggetti + + Quando si utilizza l'operatore di confronto (==), + le variabili oggetto vengono confrontate in modo semplice, ovvero: due istanze + di oggetto sono uguali se hanno gli stessi attributi e valori (i valori vengono confrontati con ==) e sono + istanze della stessa classe. + + + Quando si utilizza l'operatore di identità (===), + le variabili oggetto sono identiche se e solo se si riferiscono alla stessa + istanza della stessa classe. + + + Un esempio chiarirà queste regole. + + Esempio di confronto tra oggetti + +flag = $flag; + } +} + +class OtherFlag +{ + public $flag; + + function __construct($flag = true) { + $this->flag = $flag; + } +} + +$o = new Flag(); +$p = new Flag(); +$q = $o; +$r = new OtherFlag(); + +echo "Two instances of the same class\n"; +compareObjects($o, $p); + +echo "\nTwo references to the same instance\n"; +compareObjects($o, $q); + +echo "\nInstances of two different classes\n"; +compareObjects($o, $r); +?> +]]> + + &example.outputs; + + + + + + + + Le estensioni possono definire le proprie regole per il confronto dei loro oggetti + (==). + + + + diff --git a/language/oop5/references.xml b/language/oop5/references.xml new file mode 100644 index 000000000..5b60c0df5 --- /dev/null +++ b/language/oop5/references.xml @@ -0,0 +1,87 @@ + + + + Oggetti e riferimenti + + Uno dei punti chiave della OOP di PHP che viene spesso menzionato è che + "gli oggetti vengono passati per riferimento per impostazione predefinita". Questo non è completamente vero. + Questa sezione rettifica questo pensiero generale utilizzando alcuni esempi. + + + + Un riferimento PHP è un alias, che permette a due variabili diverse di scrivere + sullo stesso valore. In PHP, una variabile oggetto non contiene l'oggetto + stesso come valore. Contiene solo un identificatore di oggetto che permette + agli accessori dell'oggetto di trovare l'oggetto reale. Quando un oggetto viene inviato come + argomento, restituito o assegnato a un'altra variabile, le diverse variabili + non sono alias: contengono una copia dell'identificatore, che punta allo stesso + oggetto. + + + + Riferimenti e Oggetti + + +$b->foo = 2; +echo $a->foo."\n"; + + +$c = new A; +$d = &$c; // $c and $d are references + // ($c,$d) = + +$d->foo = 2; +echo $c->foo."\n"; + + +$e = new A; + +function foo($obj) { + // ($obj) = ($e) = + $obj->foo = 2; +} + +foo($e); +echo $e->foo."\n"; + +?> +]]> + + &example.outputs; + + + + + + diff --git a/language/oop5/serialization.xml b/language/oop5/serialization.xml new file mode 100644 index 000000000..7eddf96e3 --- /dev/null +++ b/language/oop5/serialization.xml @@ -0,0 +1,112 @@ + + + + Serializzazione degli oggetti - oggetti nelle sessioni + Serializzazione degli oggetti + + + serialize restituisce una stringa contenente una + rappresentazione in flusso di byte di qualsiasi valore che può essere memorizzato in + PHP. unserialize può utilizzare questa stringa per + ricreare i valori originali delle variabili. Utilizzando serialize per + salvare un oggetto si salveranno tutte le variabili nell'oggetto. I + metodi nell'oggetto non verranno salvati, solo il nome della + classe. + + + + Per poter deserializzare un oggetto con unserialize, + la classe di quell'oggetto deve essere definita. Ovvero, se si ha un oggetto + della classe A e lo si serializza, si otterrà + una stringa che fa riferimento alla classe A e contiene tutti i valori delle variabili + contenute in essa. Per poter deserializzare + questo in un altro file, un oggetto della classe A, la + definizione della classe A deve essere presente in quel file. + Questo può essere fatto, ad esempio, memorizzando la definizione della classe A + in un file di inclusione e includendo questo file o utilizzando la + funzione spl_autoload_register. + + + + +one; + } + } + +// page1.php: + + include "A.php"; + + $a = new A; + $s = serialize($a); + // store $s somewhere where page2.php can find it. + file_put_contents('store', $s); + +// page2.php: + + // this is needed for the unserialize to work properly. + include "A.php"; + + $s = file_get_contents('store'); + $a = unserialize($s); + + // now use the function show_one() of the $a object. + $a->show_one(); +?> +]]> + + + + + Si raccomanda vivamente che se un'applicazione serializza oggetti per un uso + successivo, l'applicazione includa la definizione della classe + per quell'oggetto in tutta l'applicazione. Non farlo potrebbe risultare in un + oggetto deserializzato senza una definizione di classe, il che porterà + PHP ad assegnare all'oggetto la classe __PHP_Incomplete_Class_Name, + che non ha metodi e renderebbe l'oggetto inutilizzabile. + + + + Quindi, se nell'esempio precedente $a diventasse parte di una sessione + aggiungendo una nuova chiave all'array superglobale $_SESSION, è necessario includere il + file A.php in tutte le pagine, non solo in page1.php + e page2.php. + + + + Oltre al consiglio precedente, si noti che è possibile anche agganciarsi agli eventi di serializzazione + e deserializzazione su un oggetto utilizzando i metodi + __sleep() e + __wakeup(). L'utilizzo di + __sleep() permette anche di serializzare solo + un sottoinsieme delle proprietà dell'oggetto. + + + From a45c4587a8a52801c2b83d945f94d0eb663a46e2 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Thu, 26 Feb 2026 18:16:21 +0100 Subject: [PATCH 2/2] Fix review comments: translate code comments and fix grammar --- language/oop5/final.xml | 10 +++++----- language/oop5/serialization.xml | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/language/oop5/final.xml b/language/oop5/final.xml index f8ca3a418..18b22893c 100644 --- a/language/oop5/final.xml +++ b/language/oop5/final.xml @@ -28,7 +28,7 @@ class ChildClass extends BaseClass { echo "ChildClass::moreTesting() called\n"; } } -// Results in Fatal error: Cannot override final method BaseClass::moreTesting() +// Genera un errore fatale: Cannot override final method BaseClass::moreTesting() ?> ]]> @@ -45,7 +45,7 @@ final class BaseClass { echo "BaseClass::test() called\n"; } - // As the class is already final, the final keyword is redundant + // Poiché la classe è già final, la parola chiave final è ridondante final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; } @@ -53,7 +53,7 @@ final class BaseClass { class ChildClass extends BaseClass { } -// Results in Fatal error: Class ChildClass may not inherit from final class (BaseClass) +// Genera un errore fatale: Class ChildClass may not inherit from final class (BaseClass) ?> ]]> @@ -71,7 +71,7 @@ class BaseClass { class ChildClass extends BaseClass { public string $test; } -// Results in Fatal error: Cannot override final property BaseClass::$test +// Genera un errore fatale: Cannot override final property BaseClass::$test ?> ]]> @@ -99,7 +99,7 @@ class Bar extends Foo - A partire da PHP 8.0.0, i metodi privati non possono essere dichiarati final, ad eccezione del costruttore. + A partire da PHP 8.0.0, i metodi privati non possono essere dichiarati final, a eccezione del costruttore. diff --git a/language/oop5/serialization.xml b/language/oop5/serialization.xml index 7eddf96e3..7b4401861 100644 --- a/language/oop5/serialization.xml +++ b/language/oop5/serialization.xml @@ -47,18 +47,18 @@ $a = new A; $s = serialize($a); - // store $s somewhere where page2.php can find it. + // memorizza $s dove page2.php può trovarlo. file_put_contents('store', $s); // page2.php: - // this is needed for the unserialize to work properly. + // questo è necessario perché unserialize funzioni correttamente. include "A.php"; $s = file_get_contents('store'); $a = unserialize($s); - // now use the function show_one() of the $a object. + // ora usa la funzione show_one() dell'oggetto $a. $a->show_one(); ?> ]]> @@ -66,11 +66,11 @@ - Si raccomanda vivamente che se un'applicazione serializza oggetti per un uso - successivo, l'applicazione includa la definizione della classe - per quell'oggetto in tutta l'applicazione. Non farlo potrebbe risultare in un - oggetto deserializzato senza una definizione di classe, il che porterà - PHP ad assegnare all'oggetto la classe __PHP_Incomplete_Class_Name, + Se un'applicazione serializza oggetti per un uso successivo, si raccomanda + vivamente di includere la definizione della classe per quell'oggetto + in tutta l'applicazione. Non farlo potrebbe risultare in un oggetto + deserializzato senza una definizione di classe, il che porterà PHP ad + assegnare all'oggetto la classe __PHP_Incomplete_Class_Name, che non ha metodi e renderebbe l'oggetto inutilizzabile.