Phương thức ma thuật trong PHP là gì? và Làm thế nào để thực hiện chúng?



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về các Magic Method khác nhau trong PHP với các ví dụ.

Trong , các hàm đặc biệt có thể được định nghĩa theo cách mà chúng có thể được gọi tự động và không yêu cầu bất kỳ lệnh gọi hàm nào để thực thi mã bên trong các hàm này. Tính năng này có sẵn trong một phương pháp đặc biệt được gọi là phương pháp ma thuật. Trong bài viết này, chúng ta sẽ thảo luận về các Magic Method hàng đầu trong PHP.

Magic Method trong PHP là gì?

Các phương thức bắt đầu bằng 2 dấu gạch dưới (__) thường được gọi là phương thức Magic trong PHP. Các tên phương pháp này được giới hạn trong một số danh sách PHP từ khóa được hỗ trợ đã được bảo lưu. Vì vậy, bất kỳ hàm nào không nên được định nghĩa với tên của các phương thức ma thuật PHP.





khoa học dữ liệu nó là gì

Magic-Methods-in-PHP

Thông thường, các hàm này nên do người dùng định nghĩa và không cần gọi chúng một cách rõ ràng.



Danh sách các phương pháp ma thuật trong PHP

  • __xây dựng()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ thuộc tính)
  • __set ($ thuộc tính, $ value)
  • __isset ($ content)
  • __unset ($ content)
  • __ngủ()
  • __thức dậy()
  • __toString ()
  • __invoke ()
  • __set_state ($ mảng)
  • __clone ()
  • __debugInfo ()
  • __xây dựng(): Nó là một phương thức được gọi tự động sau khi tạo một đối tượng. Bất kỳ số lượng đối số nào có thể được xác định ở đây sẽ được chuyển khi các đối tượng được tạo.
class sample {function user_def () {echo 'hàm tạo do người dùng xác định'} hàm __construct () {echo 'hàm tạo được xác định trước'}} $ obj = new sample ()?>

  • __destruct (): Bộ hủy là một tính năng phổ biến của ngôn ngữ hướng đối tượng được kích hoạt ngay khi không có tham chiếu nào khác đến một đối tượng cụ thể.
user_def () // kiểm tra đối tượng có bị phá hủy hay không echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Phương thức này được gọi khi một phương thức không xác định hoặc không thể truy cập được gọi. Có nghĩa là nó được gọi khi một phương thức không xác định hoặc không thể truy cập được gọi trên một đối tượng.
run ('teacher') // Nếu phương thức không tồn tại được gọi trong đối tượng, thì phương thức __call () sẽ được gọi tự động. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Phương thức này được gọi khi một phương thức không xác định hoặc không thể truy cập được gọi theo cách tĩnh.
user_define ()?>

  • __get ($ thuộc tính): Phương thức này được sử dụng để lấy giá trị cho các thuộc tính lớp được tạo động bằng cách nạp chồng thuộc tính PHP.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Khởi tạo đối tượng với lớp Student và gán các giá trị ban đầu vào các thuộc tính với hàm tạo. echo 'Tên :'. $ obj-> tên. '' // Khi thuộc tính private được truy cập, phương thức __get () sẽ được gọi tự động, vì vậy chúng ta có thể lấy giá trị thuộc tính một cách gián tiếp. echo 'reg :'. $ obj-> reg. '' // Phương thức __get () được gọi tự động , và nó trả về các giá trị khác nhau tùy theo đối tượng. ?>

  • __set ($ thuộc tính, $ value): Phương thức này được sử dụng để đặt giá trị cho các thuộc tính lớp được tạo động bằng cách nạp chồng thuộc tính PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My tên là '. $ this-> name.', số đăng ký của tôi là '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Lưu ý rằng giá trị ban đầu sẽ được thay đổi bởi mã phía dưới. $ obj-> name = 'Sushma' // Thuộc tính 'name' sẽ được gán thành công. Nếu không có phương thức __set () thì chương trình sẽ ném ra một ngoại lệ. $ obj-> age = 16 // Thuộc tính 'reg' sẽ được gán thành công. $ obj-> reg = 160 // 160 là một giá trị không hợp lệ, vì vậy nó không được gán. $ obj-> fun ()?>

  • __isset ($ content); Phương thức này sẽ được gọi khi gọi tới Isset () hoặc blank () cho một thành viên không xác định hoặc không thể truy cập được. Nó được gọi tự động trong khi kiểm tra xem thuộc tính nạp chồng bắt buộc có được đặt hay không, bằng cách sử dụng hàm Isset () trong PHP.
name = $ name $ this-> reg = $ reg $ this-> limit = $ important} public function __isset ($ content) {echo 'Thuộc tính {$ content} là private , phương thức __isset () được gọi tự động. 'echo Isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Được chỉ định ban đầu. echo Isset ($ obj-> giới tính), '' echo Isset ($ obj-> name), '' echo Isset ($ obj-> reg), ''?>

  • __unset ($ content): Phương thức này sẽ được gọi trong khi gọi reset () cho một thành viên không xác định hoặc không thể truy cập.
name = $ name $ this-> reg = $ reg $ this-> men = $ important} public function __unset ($ content) {echo 'Nó được gọi tự động khi chúng ta sử dụng phương thức unset () bên ngoài lớp. 'echo Isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Được chỉ định ban đầu. unset ($ obj-> giới tính) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __ngủ(): Phương thức này được gọi đầu tiên trong khi thực thi serialize (). Nó trả về mảng thuộc tính của đối tượng khi làm sạch các đối tượng lớp PHP trước khi tuần tự hóa.
name = $ name $ this-> reg = $ reg $ this-> gender = $ important} public function __sleep () {echo 'Nó được gọi khi phương thức serialize () được gọi bên ngoài lớp. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Nó phải trả về một giá trị mà các phần tử là tên của các thuộc tính được trả về. }} $ obj = new Student ('Ashok') // Được chỉ định ban đầu. echo serialize ($ obj) echo ''?>

  • __thức dậy(): Phương thức này được gọi trong khi deserialization () được thực thi. Nó sẽ đảo ngược công việc để khôi phục các thuộc tính và tài nguyên của đối tượng khi gọi deserialization ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ important} public function __sleep () {echo 'Nó được gọi khi phương thức serialize () được gọi bên ngoài lớp. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Nó phải trả về một giá trị mà các phần tử là tên của các thuộc tính được trả về. } public function __wakeup () {echo 'Nó được gọi khi phương thức unserialize () được gọi bên ngoài lớp. '$ this-> name = 2 $ this-> giới =' Nam '}} $ obj = new Student (' Ashok ') // Được chỉ định ban đầu. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Phương thức này sẽ được gọi trong khi sử dụng phương thức echo để in trực tiếp một đối tượng. Nó được mong đợi để trả về một giá trị chuỗi trong khi sử dụng các cá thể lớp với các câu lệnh in PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ important} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Được chỉ định ban đầu. echo $ obj?>

  • __invoke (): Phương thức này được định nghĩa trong một lớp sẽ được gọi trong khi cố gắng gọi một đối tượng theo cách gọi hàm.
name = $ name $ this-> reg = $ reg $ this-> limit = $ important} public function __invoke () {echo 'Đây là một đối tượng'}} $ obj = new Student ('Ashok') // Được chỉ định ban đầu . $ obj ()?>

  • __set_state ($ array): Phương thức này được gọi trong khi gọi var_export (). Nó là một phương thức tĩnh được gọi trong khi xuất mảng thuộc tính đối tượng và mong đợi biến mảng như vậy làm đối số của nó.
name = $ name $ this-> reg = $ reg $ this-> giới tính = $ giới tính}} $ obj = new Student ('Ashok') // Được chỉ định ban đầu. var_export ($ obj)?>

  • __clone (): Phương thức này được gọi khi đối tượng được sao chép.
name = $ name $ this-> reg = $ reg $ this-> giới tính = $ giới tính} public function __clone () {echo __METHOD __. 'bạn đang nhân bản đối tượng. '}} $ obj = new Student (' Ashok ') // Được chỉ định ban đầu. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Phương thức này được gọi bởi var_dump () trong khi kết xuất một đối tượng để lấy các thuộc tính cần được hiển thị. Nếu phương thức không được xác định trên một đối tượng, thì tất cả các thuộc tính public, protected và private sẽ được hiển thị.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

làm thế nào để in nhật ký cam kết git

Với điều này, chúng ta sẽ kết thúc phương pháp kỳ diệu này trong bài viết PHP. Tôi hy vọng bạn có một ý tưởng về các phương thức ma thuật khác nhau trong PHP.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu.

Có một câu hỏi cho chúng tôi? Hãy đề cập đến nó trong phần bình luận của ” Phương pháp ma thuật trong PHP ”Và tôi sẽ liên lạc lại với bạn.