Hvordan kloner et objekt i php

Hvordan kloner et objekt i php
På et objektorientert programmeringsspråk fungerer et objekt som en referansevariabel. Derfor, hvis en objektvariabel er tilordnet en annen variabel ved bruk.

I denne opplæringen vil vi klone et PHP -objekt for å lage en kopi av objektet.

Bruker tildelingsoperatøren til å kopiere et objekt

Verdien av objektvariabelen kan kopieres til en annen variabel i PHP ved å bruke objektkloning. I PHP kan en grunne kopi av objektet opprettes ved å bruke nøkkelordet klon, og en dyp kopi av objektet kan opprettes ved å bruke metoden __Clone (). I det følgende eksemplet bruker vi nøkkelordklonen og metoden __Clone () Når en objektvariabel er tilordnet en annen variabel.

Bruk koden nedenfor for å opprette en PHP -fil som heter Utenclone.PHP, og lagre filen på webserverstedet. Her er en klasse som heter kurs erklært; Kurset inneholder en variabel, $ kurs_id, og en funksjon, Detaljer (). Funksjonen vil skrive ut kursdetaljene basert på kurs -ID. Neste, et objekt som heter $ objcourse er erklært for å få tilgang til klassemedlemmene.

En gang verdien av $ kurs_id tildeles ved hjelp av dette objektet og objektvariabelen er tilordnet $ objcrs, Begge variablene vil bruke samme sted i minnet for referansen. Derfor, hvis verdien av det ene objektet endres, vil det andre objektet automatisk bli endret hvis de blir kopiert.

// definere en klasse
Klassekurs

// erklære variabel
offentlig $ kurs_id;
// erklære metode
Offentlige funksjonsdetaljer ()

// Skriv ut utgangen basert på tilstanden
if ($ this-> course_id == 'cse-202')

ekko "Kursnavn: Datastruktur
";
ekko "Kreditt time: 2.0
";

ellers if ($ this-> course_id == 'cse-305')

ekko "Kursnavn: Objektorientert programmering";
ekko "
Kreditttime: 3.0 ";



// Lag objekt selvfølgelig klasse
$ objCourse = nytt kurs ();
// Angi eiendom
$ objCourse-> course_id = "cse-202";
ekko "Utgangen før du vurderer ny verdi:

";
// Ring metoden
$ objCourse-> detaljer ();
// Kopiering av objekt
$ objcrs = $ objCourse;
// Angi ny verdi for det kopierte objektet
$ objcrs-> course_id = "cse-305";
ekko "
Utgangen etter å ha vurdert ny verdi:

";
// Ring metoden igjen
$ objCourse-> detaljer ();
?>

Du får følgende utdata etter å ha kjørt skriptet fra webserveren. Her, hvis verdien av $ OBJCRS endres, endres verdien av $ objCourse til samme verdi.

Bruke klonesnøkkelordet for å kopiere et objekt

De klon Nøkkelord kan brukes til å løse problemet ovenfor. Bruk følgende kode for å opprette en fil som heter klon.PHP. Den samme klassen brukes her. Objektet med klassen klones til et annet objekt ved å bruke klon nøkkelord for å opprette en kopi av objektet. Hvis verdien av en variabel endres, vil den ikke endre verdien på den andre variabelen.

// definere en klasse
Klassekurs

// erklære variabel
offentlig $ kurs_id;
// erklære metode
Offentlige funksjonsdetaljer ()

// Skriv ut utgangen basert på tilstanden
if ($ this-> course_id == 'cse-202')

ekko "Kursnavn: Datastruktur
";
ekko "Kreditt time: 2.0
";

ellers if ($ this-> course_id == 'cse-305')

ekko "Kursnavn: Objektorientert programmering
";
ekko "Kreditt time: 3.0 ";



// Lag objekt selvfølgelig klasse
$ objCourse = nytt kurs ();
// Angi eiendom
$ objCourse-> course_id = "cse-202";
ekko "Utgangen fra hovedobjektet før kloning og å vurdere ny verdi:

";
// Ring metoden
$ objCourse-> detaljer ();
// klonobjekt
$ objcrs = klon $ objCourse;
// Angi ny verdi for det kopierte objektet
$ objcrs-> course_id = "cse-305";
ekko "
Utgangen fra hovedobjektet etter kloning og assigining av ny verdi:

";
// Ring metoden for $ objcourse
$ objCourse-> detaljer ();
ekko "
Utgangen fra det klonede objektet:

";
// Ring metoden for $ OBJCRS
$ objcrs-> detaljer ();
?>

Du får følgende utdata etter å ha kjørt skriptet fra webserveren. Her, når verdien av $ OBJCRS endres, vil verdien av $ objcourse forbli uendret.

Ved hjelp av __clone () -metoden for å kopiere et objekt

De __Clone () Metode kan også brukes til å løse problemet ovenfor. Bruke koden Bwlow, lag en fil som heter med clonemethod.PHP. Den samme klassen brukes her. De __Clone () Metoden brukes i skriptet med klone nøkkelord. Denne metoden kalles automatisk når et objekt klones til et annet objekt. I følge skriptet tildeles en ny verdi for det klonede objektet inne i __Clone () metode.

// definere en klasse
Klassekurs

// erklære variabel
offentlig $ kurs_id;
// definere __clone () -metode
offentlig funksjon __clone ()
$ this-> course_id = "cse-305";

// erklære metode
Offentlige funksjonsdetaljer ()

// Skriv ut utgangen basert på tilstanden
if ($ this-> course_id == 'cse-202')

ekko "Kursnavn: Datastruktur
";
ekko "Kreditt time: 2.0
";

ellers if ($ this-> course_id == 'cse-305')

ekko "Kursnavn: Objektorientert programmering";
ekko "
Kreditttime: 3.0 ";



// Lag objekt selvfølgelig klasse
$ objCourse = nytt kurs ();
// Angi eiendom
$ objCourse-> course_id = "cse-202";
ekko "Utgangen fra hovedobjektet før kloning og å vurdere ny verdi:

";
// Ring metoden
$ objCourse-> detaljer ();
// klonobjekt
$ objcrs = klon $ objCourse;
ekko "
Utgangen fra hovedobjektet etter kloning:

";
// Ring metoden for $ objcourse
$ objCourse-> detaljer ();
ekko "
Utgangen fra det klonede objektet:

";
// Ring metoden for $ OBJCRS
$ objcrs-> detaljer ();
?>

Du får følgende utdata etter å ha kjørt skriptet fra webserveren. Her, når $ objcrs klones, verdien endres av __Clone () metode, men verdien av $ objcourse forblir uendret. Verdien av $ objcourse skrives ut før og etter kloning. Verdien av $ objcrs skrives ut senere.

Konklusjon

Kloning er et nyttig trekk ved PHP som kan brukes til å lage en kopi av et objekt. Begge klon nøkkelord og __Clone () Metoden vises i denne opplæringen via enkle eksempler. Vi håper denne opplæringen hjalp deg med å forstå objektkloning.