Jak sklonować obiekt w PHP

Jak sklonować obiekt w PHP
W obiektowym języku programowania obiekt działa jako zmienna odniesienia. Dlatego jeśli zmienna obiektu jest przypisana do innej zmiennej za pomocą operatora przypisania, obie zmienne odniesie się do tej samej lokalizacji, a jeśli wartość jednej zmiennej zostanie zmieniona, wówczas wartość drugiej zmiennej zmieni się automatycznie.

W tym samouczku sklonujemy obiekt PHP, aby utworzyć kopię obiektu.

Korzystanie z operatora przypisania do kopiowania obiektu

Wartość zmiennej obiektu można skopiować do innej zmiennej w PHP za pomocą klonowania obiektów. W PHP płytka kopia obiektu można utworzyć za pomocą słowa kluczowego klon, a głęboką kopię obiektu można utworzyć za pomocą metody __clone (). W poniższym przykładzie używamy klonu słów kluczowych i metody __clone () Gdy zmienna obiektu jest przypisywana do innej zmiennej.

Użyj poniższego kodu, aby utworzyć plik PHP wywołany bez klonów.php, i przechowuj plik w lokalizacji WebServer. Tutaj zadeklarowany jest klasa nazwana; Kurs zawiera zmienną, $ kurs_id, i funkcja, Detale(). Funkcja wydrukuje szczegóły kursu na podstawie identyfikatora kursu. Następnie obiekt nazwany $ objcourse jest zadeklarowany w celu uzyskania dostępu do członków klasy.

Kiedyś wartość $ kurs_id jest przypisywany za pomocą tego obiektu, a zmienna obiektu jest przypisana do $ objcrs, Obie zmienne będą używać tej samej lokalizacji w pamięci w celu odniesienia. Dlatego jeśli wartość jednego obiektu zostanie zmieniona, drugi obiekt zostanie automatycznie modyfikowany, jeśli zostanie skopiowany.

// Zdefiniuj klasę
Kurs klasowy

// deklaruj zmienną
public $ kurs_id;
// Deklaruj metodę
Szczegóły funkcji publicznej ()

// Wydrukuj wyjście na podstawie warunku
if ($ this-> kurs_id == 'cse-202')

Echo „Nazwa kursu: Struktura danych
";
Echo „Godzina kredytowa: 2.0
";

else if ($ this-> kurs_id == 'cse-305')

Echo „Nazwa kursu: programowanie zorientowane na obiekt”;
Echo "
Godzina kredytowa: 3.0 ";



// Utwórz obiekt oczywiście klasa kursu
$ objCourse = nowy kurs ();
// Ustaw właściwość
$ objcourse-> kurs_id = "cse-202";
Echo "Dane wyjściowe przed asystą nową wartością:

";
// Wywołaj metodę
$ objcourse-> detale ();
// Obiekt kopiowania
$ objcrs = $ objCourse;
// Ustaw nową wartość dla skopiowanego obiektu
$ objcrs-> kurs_id = "cse-305";
Echo "
Dane wyjściowe po aszdeli nowej wartości:

";
// ponownie wywołać metodę
$ objcourse-> detale ();
?>

Otrzymasz następujące dane wyjściowe po uruchomieniu skryptu z serwera internetowego. Tutaj, jeśli wartość $ objcrs zostanie zmieniona, wartość $ objcourse jest zmieniana na tę samą wartość.

Korzystanie z słowa kluczowego klonu do kopiowania obiektu

klon Słowo kluczowe można użyć do rozwiązania powyższego problemu. Użyj następującego kodu, aby utworzyć plik o nazwie klon.php. Tutaj używana jest ta sama klasa. Obiekt klasy jest sklonowany do innego obiektu za pomocą klon słowo kluczowe do utworzenia kopii obiektu. Jeśli wartość jednej zmiennej się zmieni, nie zmieni wartości drugiej zmiennej.

// Zdefiniuj klasę
Kurs klasowy

// deklaruj zmienną
public $ kurs_id;
// Deklaruj metodę
Szczegóły funkcji publicznej ()

// Wydrukuj wyjście na podstawie warunku
if ($ this-> kurs_id == 'cse-202')

Echo „Nazwa kursu: Struktura danych
";
Echo „Godzina kredytowa: 2.0
";

else if ($ this-> kurs_id == 'cse-305')

Echo „Nazwa kursu: Programowanie zorientowane na obiekt
";
Echo „Godzina kredytowa: 3.0 ";



// Utwórz obiekt oczywiście klasa kursu
$ objCourse = nowy kurs ();
// Ustaw właściwość
$ objcourse-> kurs_id = "cse-202";
Echo "Wyjście głównego obiektu przed klonowaniem i asystą nową wartością:

";
// Wywołaj metodę
$ objcourse-> detale ();
// obiekt klonów
$ objcrs = klon $ objcourse;
// Ustaw nową wartość dla skopiowanego obiektu
$ objcrs-> kurs_id = "cse-305";
Echo "
Wyjście głównego obiektu po klonowaniu i asymowaniu nowej wartości:

";
// Wywołaj metodę $ objcourse
$ objcourse-> detale ();
Echo "
Wyjście zdefiniowanego obiektu:

";
// Wywołaj metodę $ objcrs
$ objcrs-> detale ();
?>

Otrzymasz następujące dane wyjściowe po uruchomieniu skryptu z serwera internetowego. Tutaj, gdy wartość $ objcrs zostanie zmieniona, wartość $ objcourse pozostanie niezmieniona.

Za pomocą metody __clone () do kopiowania obiektu

__clone () Metodę można również zastosować do rozwiązania powyższego problemu. Korzystając z kodu Bwlow, utwórz plik o nazwie z clonemethod.php. Tutaj używana jest ta sama klasa. __clone () Metoda jest stosowana w skrypcie ze słowem kluczowym klonów. Ta metoda jest wywoływana automatycznie, gdy obiekt jest sklonowany do innego obiektu. Zgodnie ze skryptem przypisuje się nową wartość dla sklonowanego obiektu wewnątrz __clone () metoda.

// Zdefiniuj klasę
Kurs klasowy

// deklaruj zmienną
public $ kurs_id;
// Zdefiniuj metodę __clone ()
funkcja publiczna __clone ()
$ this-> kurs_id = "cse-305";

// Deklaruj metodę
Szczegóły funkcji publicznej ()

// Wydrukuj wyjście na podstawie warunku
if ($ this-> kurs_id == 'cse-202')

Echo „Nazwa kursu: Struktura danych
";
Echo „Godzina kredytowa: 2.0
";

else if ($ this-> kurs_id == 'cse-305')

Echo „Nazwa kursu: programowanie zorientowane na obiekt”;
Echo "
Godzina kredytowa: 3.0 ";



// Utwórz obiekt oczywiście klasa kursu
$ objCourse = nowy kurs ();
// Ustaw właściwość
$ objcourse-> kurs_id = "cse-202";
Echo "Wyjście głównego obiektu przed klonowaniem i asystą nową wartością:

";
// Wywołaj metodę
$ objcourse-> detale ();
// obiekt klonów
$ objcrs = klon $ objcourse;
Echo "
Wyjście głównego obiektu po klonowaniu:

";
// Wywołaj metodę $ objcourse
$ objcourse-> detale ();
Echo "
Wyjście zdefiniowanego obiektu:

";
// Wywołaj metodę $ objcrs
$ objcrs-> detale ();
?>

Otrzymasz następujące dane wyjściowe po uruchomieniu skryptu z serwera internetowego. Tutaj, kiedy $ objcrs jest klonowany, jego wartość jest zmieniana przez __clone () metoda, ale wartość $ objcourse pozostaje bez zmian. Wartość $ objcourse jest drukowane przed i po klonowaniu. Wartość $ objcrs jest wydrukowany później.

Wniosek

Klonowanie jest przydatną cechą PHP, której można użyć do utworzenia kopii obiektu. Oboje klon Słowo kluczowe i __clone () Metoda jest pokazana w tym samouczku za pomocą prostych przykładów. Mamy nadzieję, że ten samouczek pomógł ci zrozumieć klonowanie obiektów.