Hướng dẫn dùng define clone trong PHP

Việc tạo một bản sao của một đối tượng với đầy đủ các thuộc tính được sao chép đôi khi là điều cần thiết. Một ví dụ là sự cần thiết phải sao chép các hàm tạo là nếu bạn có một đối tượng thể hiện một cửa sổ GTK và đối tượng đó chứa tài nguyên của cửa sổ GTK, khi bạn tạo bản sao bạn có thể muốn tạo một cửa sổ mới với các thuộc tính tương tự và có đối tượng mới chứa tài nguyên của cửa sổ mới. Một ví dụ khác là nếu đối tượng của bạn chứa một tham chiếu tới đối tượng khác và khi bạn nhân bản đối tượng cha bạn muốn tạo một thể hiện mới của đối tượng khác này để việc nhân bản có bản copy độc lập của chính nó.

Một đối tượng được sao chép được tạo bằng cách sử dụng từ khóa clone [điều này sẽ gọi tới phương thức __clone[] của đối tượng nếu cần thiết]. Phương thức __clone[] của đối tượng không thể được gọi trực tiếp. Ví dụ,

$copy_of_object = clone $object;

Khi một đối tượng được nhân bản thì PHP 5 sẽ tạo một bản copy mức thấp các thuộc tính của đối tượng. Bất kỳ thuộc tính nào tham chiếu tới các biến khác nhau sẽ đều được giữ giam chiếu. Cú pháp của phương thức __clone[] như sau:

void __clone [ void ]

Sau khi nhân bản hoàn chỉnh thì phương thức __clone[] sẽ được định nghĩa, khi đó phương thức __clone[] của đối tượng mới được tạo sẽ được gọi, và nó cho phép bất kỳ thuộc tính cần thiết nào cũng có thể thay đổi được.

Ví dụ 1: Nhân bản đối tượng

 Output của ví dụ trên:

Original Object: MyCloneable Object [ [object1] => SubObject Object [ [instance] => 1 ] [object2] => SubObject Object [ [instance] => 2 ] ] Cloned Object: MyCloneable Object [ [object1] => SubObject Object [ [instance] => 3 ] [object2] => SubObject Object [ [instance] => 2 ] ]

Việc tạo một bản sao của một đối tượng với đầy đủ các thuộc tính được sao chép đôi khi là điều cần thiết. Một ví dụ là sự cần thiết phải sao chép các hàm tạo là nếu bạn có một đối tượng thể hiện một cửa sổ GTK và đối tượng đó chứa tài nguyên của cửa sổ GTK, khi bạn tạo bản sao bạn có thể muốn tạo một cửa sổ mới với các thuộc tính tương tự và có đối tượng mới chứa tài nguyên của cửa sổ mới. Một ví dụ khác là nếu đối tượng của bạn chứa một tham chiếu tới đối tượng khác và khi bạn nhân bản đối tượng cha bạn muốn tạo một thể hiện mới của đối tượng khác này để việc nhân bản có bản copy độc lập của chính nó.

Một đối tượng được sao chép được tạo bằng cách sử dụng từ khóa clone [điều này sẽ gọi tới phương thức __clone[] của đối tượng nếu cần thiết]. Phương thức __clone[] của đối tượng không thể được gọi trực tiếp. Ví dụ,

$copy_of_object = clone $object;

Khi một đối tượng được nhân bản thì PHP 5 sẽ tạo một bản copy mức thấp các thuộc tính của đối tượng. Bất kỳ thuộc tính nào tham chiếu tới các biến khác nhau sẽ đều được giữ giam chiếu. Cú pháp của phương thức __clone[] như sau:

void __clone [ void ]

Sau khi nhân bản hoàn chỉnh thì phương thức __clone[] sẽ được định nghĩa, khi đó phương thức __clone[] của đối tượng mới được tạo sẽ được gọi, và nó cho phép bất kỳ thuộc tính cần thiết nào cũng có thể thay đổi được.

Ví dụ 1: Nhân bản đối tượng

 Output của ví dụ trên:

Original Object:
MyCloneable Object
[
    [object1] => SubObject Object
        [
            [instance] => 1
        ]

    [object2] => SubObject Object
        [
            [instance] => 2
        ]

]
Cloned Object:
MyCloneable Object
[
    [object1] => SubObject Object
        [
            [instance] => 3
        ]

    [object2] => SubObject Object
        [
            [instance] => 2
        ]

]

Chủ Đề