Come clonare un oggetto in PHP

Come clonare un oggetto in PHP
In un linguaggio di programmazione orientato agli oggetti, un oggetto funge da variabile di riferimento. Pertanto, se una variabile oggetto viene assegnata a un'altra variabile utilizzando l'operatore di assegnazione, entrambe le variabili faranno riferimento alla stessa posizione e se il valore di una variabile viene modificato, il valore dell'altra variabile cambierà automaticamente.

In questo tutorial, cloneremo un oggetto PHP per creare una copia dell'oggetto.

Utilizzando l'operatore di assegnazione per copiare un oggetto

Il valore della variabile oggetto può essere copiato in un'altra variabile in PHP usando la clonazione degli oggetti. In PHP, una copia superficiale dell'oggetto può essere creata utilizzando la parola chiave clone, e una copia profonda dell'oggetto può essere creata utilizzando il metodo __clone(). Nel seguente esempio, utilizziamo il clone delle parole chiave e il metodo __clone() Quando una variabile oggetto viene assegnata a un'altra variabile.

Utilizzare il codice seguente per creare un file PHP chiamato senza clone.PHP, e memorizzare il file nella posizione del server web. Qui, viene dichiarato un corso chiamato Corso; Il corso contiene una variabile, $ Course_id, e una funzione, Dettagli(). La funzione stampa i dettagli del corso in base all'ID del corso. Successivamente, un oggetto chiamato $ objcourse è dichiarato per accedere ai membri della classe.

Una volta il valore di $ Course_id è assegnato usando questo oggetto e la variabile oggetto è assegnata a $ objcrs, Entrambe le variabili utilizzeranno la stessa posizione nella memoria per il riferimento. Pertanto, se il valore di un oggetto viene modificato, l'altro oggetto verrà automaticamente modificato se viene copiato.

// Definisci una classe
Corso di classe

// Dichiara variabile
public $ course_id;
// Dichiara metodo
Dettagli della funzione pubblica ()

// Stampa l'output in base alla condizione
if ($ this-> Course_id == 'CSE-202')

Echo "Nome del corso: struttura dei dati
";
Echo "Credit Hour: 2.0
";

else if ($ this-> Course_id == 'CSE-305')

Echo "Nome del corso: programmazione orientata agli oggetti";
eco "
Ora di credito: 3.0 ";



// Crea oggetto della classe del corso
$ objCourse = new Course ();
// Imposta proprietà
$ objCourse-> Course_id = "CSE-202";
eco "L'output prima di assignare nuovo valore:

";
// Chiama il metodo
$ objcourse-> dettagli ();
// Oggetto di copia
$ objcrs = $ objCourse;
// imposta un nuovo valore per l'oggetto copiato
$ OBJCRS-> Course_id = "CSE-305";
eco "
L'output dopo aver assalito un nuovo valore:

";
// Chiama di nuovo il metodo
$ objcourse-> dettagli ();
?>

Otterrai il seguente output dopo aver eseguito lo script dal server web. Qui, se il valore di $ objcrs viene modificato, il valore di $ objcourse viene modificato allo stesso valore.

Utilizzo della parola chiave clone per copiare un oggetto

IL clone La parola chiave può essere utilizzata per risolvere il problema sopra. Utilizzare il seguente codice per creare un file denominato clone.PHP. La stessa classe è usata qui. L'oggetto della classe viene clonato su un altro oggetto usando il clone parola chiave per creare una copia dell'oggetto. Se il valore di una variabile cambia, non modificherà il valore dell'altra variabile.

// Definisci una classe
Corso di classe

// Dichiara variabile
public $ course_id;
// Dichiara metodo
Dettagli della funzione pubblica ()

// Stampa l'output in base alla condizione
if ($ this-> Course_id == 'CSE-202')

Echo "Nome del corso: struttura dei dati
";
Echo "Credit Hour: 2.0
";

else if ($ this-> Course_id == 'CSE-305')

Echo "Nome del corso: programmazione orientata agli oggetti
";
Echo "Credit Hour: 3.0 ";



// Crea oggetto della classe del corso
$ objCourse = new Course ();
// Imposta proprietà
$ objCourse-> Course_id = "CSE-202";
eco "L'output dell'oggetto principale prima di clonning e assignare nuovo valore:

";
// Chiama il metodo
$ objcourse-> dettagli ();
// oggetto clone
$ objcrs = clone $ objcourse;
// imposta un nuovo valore per l'oggetto copiato
$ OBJCRS-> Course_id = "CSE-305";
eco "
L'output dell'oggetto principale dopo la clonning e l'assicenza di un nuovo valore:

";
// chiama il metodo per $ objcourse
$ objcourse-> dettagli ();
eco "
L'output dell'oggetto clonned:

";
// Chiama il metodo per $ objcrs
$ objcrs-> dettagli ();
?>

Otterrai il seguente output dopo aver eseguito lo script dal server web. Qui, quando il valore di $ objcrs viene modificato, il valore di $ objcourse rimarrà invariato.

Usando il metodo __clone () per copiare un oggetto

IL __clone() Il metodo può anche essere utilizzato per risolvere il problema sopra. Utilizzando il codice bwlow, crea un file denominato concloneMethod.PHP. La stessa classe è usata qui. IL __clone() Il metodo viene utilizzato nello script con la parola chiave clone. Questo metodo viene chiamato automaticamente quando un oggetto viene clonato su un altro oggetto. Secondo lo script, viene assegnato un nuovo valore per l'oggetto clonato all'interno del __clone() metodo.

// Definisci una classe
Corso di classe

// Dichiara variabile
public $ course_id;
// Define __clone () metodo
funzione pubblica __clone ()
$ this-> Course_id = "CSE-305";

// Dichiara metodo
Dettagli della funzione pubblica ()

// Stampa l'output in base alla condizione
if ($ this-> Course_id == 'CSE-202')

Echo "Nome del corso: struttura dei dati
";
Echo "Credit Hour: 2.0
";

else if ($ this-> Course_id == 'CSE-305')

Echo "Nome del corso: programmazione orientata agli oggetti";
eco "
Ora di credito: 3.0 ";



// Crea oggetto della classe del corso
$ objCourse = new Course ();
// Imposta proprietà
$ objCourse-> Course_id = "CSE-202";
eco "L'output dell'oggetto principale prima di clonning e assignare nuovo valore:

";
// Chiama il metodo
$ objcourse-> dettagli ();
// oggetto clone
$ objcrs = clone $ objcourse;
eco "
L'output dell'oggetto principale dopo la clonning:

";
// chiama il metodo per $ objcourse
$ objcourse-> dettagli ();
eco "
L'output dell'oggetto clonned:

";
// Chiama il metodo per $ objcrs
$ objcrs-> dettagli ();
?>

Otterrai il seguente output dopo aver eseguito lo script dal server web. Qui, quando $ objcrs è clonato, il suo valore è modificato dal __clone() metodo, ma il valore di $ objcourse Rimane invariato. Il valore di $ objcourse è stampato prima e dopo la clonazione. Il valore di $ objcrs è stampato più tardi.

Conclusione

La clonazione è una caratteristica utile di PHP che può essere utilizzata per creare una copia di un oggetto. Entrambi i clone Parole chiave e __clone() il metodo sono mostrati in questo tutorial tramite semplici esempi. Speriamo che questo tutorial ti abbia aiutato a capire la clonazione degli oggetti.