Hàm ma thuật trong PHP là gì?

Các phương pháp ma thuật, như tên cho thấy, là các phương pháp duy nhất dành cho các mục đích cụ thể. Các phương thức này có dấu gạch dưới kép làm tiền tố cho tất cả các phương thức đó. Tất cả các phương thức kỳ diệu này đều được dành riêng và các lập trình viên không sử dụng chúng để khai báo các phương thức do người dùng định nghĩa. Chúng ta phải khai báo các phương thức này là public. Các phương thức này đóng vai trò là người khởi xướng và được gọi tự động khi gặp các tình huống cụ thể

Dưới đây là tất cả các phương pháp kỳ diệu được giải thích với các ví dụ và cú pháp

i] __construct[].  

Phương thức này được gọi tự động khi ai đó tạo đối tượng của một lớp. Nói cách khác, bất cứ khi nào bạn định nghĩa một phương thức __construct[] được liên kết với một lớp mà bạn đang tạo, sẽ có một khởi tạo tự động bất cứ khi nào một lập trình viên tạo một đối tượng mới cho lớp đó

cú pháp

class newClass{
	function __construct[]{
		// Statments within this magic method
	}

	function functionAnother[]{
		// Statements
	}
}

Thí dụ

 

đầu ra

This is a construct[] method that will be called automatically when the class object will be created.

Ở đây chúng ta đã tạo một phương thức __construct[] trong lớp. Chúng ta có thể thấy rằng chúng ta chỉ tạo đối tượng lớp và nó tự động gọi thông báo được lặp lại trong __construct[]. Trong khi đó, để gọi hàmAnother[], chúng ta phải sử dụng tên đối tượng để gọi nó. Vì chúng tôi chưa gọi chức năng khác một cách rõ ràng, nên nó không được sử dụng

ii] __hủy []

Hàm này có tính năng ngược lại với tính năng của __construct[]. Mọi thứ mà chúng tôi xây dựng bằng cách sử dụng __construct[] cần hủy để tiết kiệm dung lượng bộ nhớ. Phương thức này được kích hoạt khi không có tham chiếu nào khác đến đối tượng lớp mà nó áp dụng. Phương thức __destroy[] được gọi tự động khi chương trình ngầm hủy đối tượng

cú pháp

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];

Thí dụ

đầu ra

Variables created automatically when the class object gets created It is called when the script has to shut down.

Ở đây chúng ta đã tạo một phương thức __construct[] và __destroy[] trong lớp. Chúng ta có thể thấy rằng chúng ta chỉ tạo đối tượng lớp và nó tự động gọi các thông báo được lặp lại trong __construct[] & __desturation[]. Bất cứ thứ gì được tạo trong __construct[] sẽ tự động được giải phóng hoặc xóa bằng cách sử dụng __desturation[] khi chúng ta đã tạo 'đối tượng' của newClass trong chương trình này

iii] __gọi[]

Các lập trình viên PHP sử dụng __call[] để tạo các phương thức không thể truy cập được tạo động khi các lập trình viên thực hiện nạp chồng phương thức trong PHP. Phương thức này sẽ chỉ gọi các phương thức quá tải thông thường của PHP

cú pháp

public __call [ string $name , array $arguments ]{
	// body inside __call[] magic method
	// normal inaccessible method invoking
}

Thí dụ

 runTest['in context to the object'];
?>

đầu ra

________số 8_______

Như bạn có thể thấy, chúng ta đã gọi phương thức runTest[] bằng cách sử dụng tên đối tượng 'obj' với một tham số chuỗi bên trong nó. Chúng tôi chưa định nghĩa phương thức này ở bất kỳ đâu trong chương trình. Đây là những gì đã gọi phương thức __call[]. Phương thức __call[] đã giải cứu và giúp dừng chương trình đột ngột

iv] __callStatic[]

Các lập trình viên PHP sử dụng __callStatic[] để tạo các phương thức tĩnh không thể truy cập được tạo động khi các lập trình viên thực hiện quá tải phương thức tĩnh trong PHP. Phương thức này sẽ chỉ gọi các phương thức tĩnh quá tải thông thường của PHP

cú pháp

public __callStatic [string $name , array $arguments]{

// body inside __callStatic[] magic method

// inaccessible static method invoking

}

Thí dụ

đầu ra

 
1

Như bạn có thể thấy, chúng tôi đã gọi phương thức tĩnh runTest[] bằng cách sử dụng tên đối tượng 'obj' với một tham số chuỗi bên trong nó. Chúng tôi chưa định nghĩa phương thức này ở bất kỳ đâu trong chương trình. Đây là những gì đã gọi phương thức __callStatic[]. Phương thức __callStatic[] đã giải cứu và giúp dừng chương trình đột ngột

v] __set[]

__set[] là một phương thức ma thuật phổ biến khác được thực thi khi ghi dữ liệu trên các thuộc tính lớp không thể truy cập [riêng tư hoặc được bảo vệ] hoặc không lâu dài. Phương thức này thường bổ sung cho phương thức ma thuật khác __get[]. Các lập trình viên gọi chúng bất cứ khi nào một chương trình có biến lớp không xác định trong tập lệnh. Các lập trình viên sử dụng phương pháp này để giữ một đối tượng dữ liệu bổ sung mà họ chưa xác định rõ ràng các thuộc tính của đối tượng

cú pháp

 
2

Thí dụ

 
3

Từ đoạn mã trên, chúng tôi đã cố gắng thiết lập thuộc tính điện thoại không tồn tại của mình. Do đó, chúng tôi đã gọi phương thức __set[] nhận hai đối số. Đối số đầu tiên [$n] là tên của thuộc tính mà chúng tôi muốn truy cập. Đối số thứ hai [$val] đại diện cho giá trị chúng tôi đang cố đặt

vi] __get[].  

Nó hoàn toàn ngược lại với phương thức __set[]. Phương pháp ma thuật này được sử dụng để tạo mã thuộc tính theo cách mà ngay cả khi chúng không tồn tại, nó vẫn khiến chúng xuất hiện như thể chúng tồn tại. __get[] được gọi khi các lập trình viên cố gắng truy cập dữ liệu từ bất kỳ thuộc tính đối tượng nào không thể truy cập [riêng tư hoặc được bảo vệ]

cú pháp

 
4

Thí dụ

 
5

Ở đây, chương trình muốn truy cập thuộc tính đối tượng không thể truy cập, đó là dữ liệu riêng của lớp Nhân viên. Khi phương thức __set[] chịu trách nhiệm gán giá trị cho các thuộc tính đối tượng không thể truy cập [ở đây là riêng tư], thì __get[] được sử dụng để hiển thị thuộc tính đối tượng không thể truy cập đó

vii] __isset[]

__isset[] là một phương thức kỳ diệu khác mà các lập trình viên sử dụng khi họ muốn kiểm tra quyền truy cập của bất kỳ thuộc tính không tồn tại hoặc không thể truy cập nào của một đối tượng lớp. Để gọi phương thức ma thuật __isset[], chúng ta phải gọi __isset[] với các thuộc tính không thể truy cập hoặc không được xác định làm tham số của nó. Nó được gọi tự động để kiểm tra xem thuộc tính đối tượng cần thiết có được đặt hay không

cú pháp

 
6

Thí dụ

 
7

đầu ra

 
8

Ở đây, chương trình muốn truy cập thuộc tính đối tượng không thể truy cập không được định nghĩa là một phần của lớp Trình quản lý. Phương thức isset[] lấy biến không thể truy cập 'empid' làm tham số để kiểm tra sự tồn tại của thuộc tính đối tượng

viii] __unset[]

__unset[] là một phương thức ma thuật khác được gọi tự động để hủy một biến và giải phóng không gian bộ nhớ. Khi __isset[] được sử dụng để kiểm tra xem một biến có tồn tại hay không, __unset[] chỉ đơn giản là hủy một biến khi được sử dụng trên các thuộc tính không tồn tại hoặc không thể truy cập

cú pháp

 
9

Thí dụ

This is a construct[] method that will be called automatically when the class object will be created.
0

đầu ra

This is a construct[] method that will be called automatically when the class object will be created.
1

Tại đây, chương trình kiểm tra xem biến không tồn tại có tồn tại hay không. __isset[] sẽ kiểm tra sự tồn tại của nó. Nếu nó tồn tại, unset sẽ hủy biến và giải phóng dung lượng bộ nhớ bằng phương thức __unset[]

ix] __sleep[] và __wakeup[].  

__ngủ[]

Khi đối tượng được sắp xếp theo thứ tự, lập trình viên sử dụng phương thức __sleep[]. Nói cách khác, phương thức này xuất hiện khi chúng ta sử dụng phương thức serialize[]. Trong trường hợp bạn có một đối tượng rất lớn, bạn chỉ muốn giữ các thuộc tính đã chọn trong suốt quá trình tuần tự hóa - bạn có thể sử dụng __sleep[]. Nó phải trả về một mảng có tên của tất cả các thuộc tính đối tượng mà chúng ta muốn tuần tự hóa

cú pháp

This is a construct[] method that will be called automatically when the class object will be created.
2

Thí dụ

This is a construct[] method that will be called automatically when the class object will be created.
3

đầu ra

This is a construct[] method that will be called automatically when the class object will be created.
4

Trong chương trình này, __construct[] để tự động gán $name, $regn và $gender. Trong phương thức __sleep[], chúng tôi đã trả về mảng, có tên của tất cả các thuộc tính đối tượng mà chúng tôi muốn tuần tự hóa. Bây giờ, từ bên ngoài lớp, chúng ta đã gọi hàm serialize[] bằng cách chuyển đối tượng lớp làm tham số. Nó tự động gọi phương thức __sleep[] để trích xuất tất cả các thuộc tính đối tượng mà chúng ta muốn tuần tự hóa

__thức dậy[]

Phương thức ma thuật giúp thiết lập lại mọi kết nối và tác vụ khởi động khi lập trình viên gọi hàm unserialize[] với đối tượng lớp. Phương thức này được gọi tự động khi quá trình khử lưu huỳnh diễn ra

Thí dụ

This is a construct[] method that will be called automatically when the class object will be created.
5_______2_______6

xi] __toString[].  

Phương thức ma thuật này cho phép xác định xem bạn muốn hiển thị hay coi bất kỳ đối tượng lớp nào dưới dạng chuỗi. Nó trả về một giá trị chuỗi khi chúng ta sử dụng các thể hiện của lớp với PHP. Nếu lập trình viên chỉ định bất kỳ kiểu trả về nào khác với chuỗi, nó sẽ hiển thị lỗi như thế này

"Lỗi nghiêm trọng. Lớp Kiểm tra Phương pháp. __toString[] phải trả về một giá trị chuỗi”

cú pháp

This is a construct[] method that will be called automatically when the class object will be created.
7

Thí dụ

This is a construct[] method that will be called automatically when the class object will be created.
8

đầu ra

This is a construct[] method that will be called automatically when the class object will be created.
9

Trong chương trình này __construct[] được gọi tự động khi đối tượng được tạo cho lớp Nhân viên. Bây giờ để xử lý bất kỳ đối tượng lớp nào dưới dạng chuỗi, ở đây chúng tôi đã sử dụng phương thức __toString[] nơi chúng tôi đã chuyển tên nhân viên và email dưới dạng giá trị chuỗi. Bây giờ, lặp lại đối tượng lớp echo $obj2;

xii] __gọi[].  

Nó là một phương thức ma thuật tiện ích thiết yếu khác được gọi tự động khi các lập trình viên cố gắng gọi một đối tượng như thể nó là một hàm tổng quát. Nói cách khác, khi chúng ta cố gắng thực hiện một lời gọi hàm bằng cách sử dụng tên đối tượng của lớp, thì phương thức __invoke[] sẽ tự thực hiện

cú pháp

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
0

Thí dụ

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
1

đầu ra

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
2

Trong trường hợp này  __construct[] được gọi tự động khi đối tượng được tạo cho lớp Nhân viên. Bây giờ, đối tượng của lớp được tạo và đối tượng được gọi là một hàm bình thường. Ngay khi PHP gặp tình huống như vậy, $obj3[];

xiii] __set_state[].  

Đây là một phương pháp ma thuật tĩnh được sử dụng với hàm var_export[]. Như chúng ta đều biết rằng hàm var_export[] sẽ cung cấp hoặc trả về một phần thông tin có cấu trúc về bất kỳ biến hoặc thể hiện lớp nào được truyền bên trong nó. Khi các lập trình viên PHP sử dụng hàm var_export[] để xuất các lớp, họ sử dụng phương thức __set_state[]

cú pháp

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
3

Thí dụ

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
4

đầu ra

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
5

__construct[] được gọi tự động khi đối tượng được tạo cho lớp Nhân viên. Phương thức tĩnh __set_state[] lấy mảng làm tham số và trả về đối tượng. Bây giờ, chúng tôi đã tạo đối tượng lớp bên ngoài lớp bằng cách cung cấp hai đối số chuỗi [tên nhân viên và ID email]. Ngay khi PHP gặp hàm var_export[] trong đó đối tượng [$obj4] được truyền dưới dạng tham số, nó sẽ gọi phương thức __set_state[]

xiv] __clone[]

Như chúng ta đã biết, chúng ta sử dụng từ khóa clone để sao chép bất kỳ đối tượng hiện có nào. Nhưng nếu chúng ta muốn sửa đổi các thuộc tính của đối tượng trùng lặp thì sao?. Để làm điều này, chúng ta phải sử dụng __clone[] từ bên trong lớp nơi chúng ta có thể thực hiện sửa đổi đối tượng trùng lặp

cú pháp

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
6

Thí dụ

class newClass{
	function __destruct[]{
		// Statments within this magic method
	}
}
$object = new newClass[];
7

Trong chương trình này, chúng tôi đã tạo ra hai lớp. Lớp Emplyee_Dept {} được để trống để hiển thị cách hoạt động của chương trình này. Lớp Nhân viên có __construct[] được gọi tự động khi đối tượng được tạo cho lớp Nhân viên. Việc nhân bản đối tượng được thực hiện trong __construct[]. Trong phương thức __clone[], chúng tôi đang thực hiện sửa đổi đối tượng trùng lặp. Bên ngoài lớp, $objtwo = clone $objone;

xv] __debugInfo[].  

Nó là một phương thức ma thuật tiện ích khác được gọi tự động khi chúng ta muốn kết xuất bất kỳ đối tượng nào với sự trợ giúp của hàm var_dump[]. Trong trường hợp phương thức này không được định nghĩa là liên kết một đối tượng, thì nó sẽ loại bỏ tất cả các thuộc tính công khai, được bảo vệ và riêng tư của lớp đó

Làm cách nào để gọi phương thức ma thuật trong PHP?

Ví dụ. echo $obj; $obj->__toString[]; sẽ được gọi một cách kỳ diệu. Phương thức này được gọi khi một biến không thể truy cập hoặc biến không tồn tại được sử dụng. Phương thức này được gọi khi một biến không thể truy cập hoặc biến không tồn tại được viết.

Phương pháp ma thuật là gì và mục đích của nó là gì?

Các phương thức ma thuật là các phương thức đặc biệt trong python có hai dấu gạch dưới [dunder] ở cả hai bên của tên phương thức . Các phương pháp ma thuật chủ yếu được sử dụng để nạp chồng toán tử.

Biến ma thuật trong PHP là gì?

Hằng ma thuật là hằng số được xác định trước trong PHP, được thay đổi trên cơ sở sử dụng chúng . Chúng bắt đầu bằng dấu gạch dưới kép [__] và kết thúc bằng dấu gạch dưới kép. Chúng tương tự như các hằng số được xác định trước khác nhưng khi chúng thay đổi giá trị theo ngữ cảnh, chúng được gọi là hằng số ma thuật.

Phương pháp ma thuật laravel là gì?

Phương thức ma thuật là tên được đặt cho một tập hợp các phương thức được chọn trong các lớp PHP, thường bắt đầu bằng dấu gạch dưới kép __ , mỗi phương thức có mục đích riêng. Examples of magic methods are __call , __callStatic , __toString etc.

Chủ Đề