Phương pháp ma thuật trong php với các ví dụ là gì?

Tất cả các tên hàm bắt đầu bằng __ trong các lớp PHP đều rất kỳ diệu và mỗi cái đều có một điều đặc biệt. Những chức năng này là huyền diệu. , , , , , , , , , , , , , , , và

__xây dựng()

Các lớp có phương thức __construct(), gọi nó mỗi khi đối tượng mới được tạo. Nói cách khác, rất hữu ích khi khởi tạo mà đối tượng có thể cần trước khi đi xa hơn

class Student {
public function __construct($name) {
echo "Initialization...";
$this->name = $name;
}

public function sayHello() {
return "Hello, $this->name";
}
}
$student = new Student('Mahshad');
echo $student->sayHello();
// output: Initialization...Hello, Mahshad
__phá hủy()

Phương thức này được gọi ngay sau khi đối tượng bị hủy

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...

Trong PHP, thuật ngữ nạp chồng được sử dụng để tự động tạo các phương thức và thuộc tính. Có hai phương thức hỗ trợ nạp chồng phương thức. __call() và __callStatic()

__cuộc gọi()

Phương thức ma thuật này được kích hoạt khi chúng ta gọi một phương thức không được xác định. Phương pháp này chấp nhận hai tham số, như dưới đây

public __call ( string $name , array $arguments ) : mixed

Ví dụ sau đây cho thấy việc sử dụng phương thức __call()

class Student {
public function __call($name, $arguments) {
echo $name . ' => ' . implode(', ', $arguments);
}
}
$student = new Student();
echo $student->hello('Mahshad', 'Sara', 'Pit');
// output: hello => Mahshad, Sara, Pit
__callStatic()

Phương thức ma thuật này gần giống với phương thức __call(), ngoại trừ phương thức __call() dành cho ngữ cảnh đối tượng và phương thức __callStatic() dành cho ngữ cảnh tĩnh

Phương thức __callStatic() chấp nhận hai tham số, như bên dưới

public static __callStatic ( string $name , array $arguments ) : mixed

Ví dụ sau đây cho thấy việc sử dụng phương thức __call()

class Student {
public static function __callStatic($name, $arguments) {
echo $name . ' => ' . implode(', ', $arguments);
}
}
echo Student::hello('Mahshad', 'Sara', 'Pit');// output: hello => Mahshad, Sara, Pit

Một khía cạnh khác của khả năng nạp chồng PHP là nạp chồng thuộc tính. Có bốn phương thức ma thuật hỗ trợ nạp chồng thuộc tính. __get(), __set(), __isset() và __unset()

__được()

Phương thức ma thuật __get() được sử dụng để đọc dữ liệu từ các thuộc tính không thể truy cập (được bảo vệ hoặc riêng tư) hoặc không tồn tại. Phương thức chấp nhận một tham số, như sau

public __get ( string $name ) : mixed

Ví dụ

class Student {
private $data = [
'first_name' => 'Mahshad',
'last_name' => 'Kalantari'
];

public function __get($name) {
echo $name . ' => ' . $this->data[$name];
}
}
$student = new Student();echo $student->first_name;// output: first_name => Mahshad
__bộ()

Phương thức ma thuật __set() được chạy khi ghi dữ liệu vào các thuộc tính không thể truy cập (được bảo vệ hoặc riêng tư) hoặc không tồn tại. Phương thức chấp nhận hai tham số, như sau

________số 8

Ví dụ

class Student {
private $data = [];

public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$student = new Student();$student->first_name = 'Mahshad';
__isset() và __unset()

Phương thức ma thuật __isset() được kích hoạt bằng cách gọi isset() hoặc empty() trên các thuộc tính không thể truy cập (được bảo vệ hoặc riêng tư) hoặc không tồn tại. Phương thức chấp nhận một tham số duy nhất, như bên dưới

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
0

Phương thức ma thuật __unset() được gọi khi unset() được sử dụng trên các thuộc tính không thể truy cập (được bảo vệ hoặc riêng tư) hoặc không tồn tại. Phương thức chấp nhận một tham số duy nhất, như bên dưới

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
1

Một ví dụ cho các phương thức __isset() và __unset()

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
2

__ngủ() và __thức dậy()

Hàm serialize() kích hoạt phương thức ma thuật __sleep() nếu nó tồn tại và ngược lại, hàm unserialize() kích hoạt phương thức ma thuật __wakeup(). Cả hai đều không chấp nhận tham số

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
3

Ví dụ

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
4

Mục đích sử dụng của __wakeup() là thiết lập lại bất kỳ kết nối cơ sở dữ liệu nào có thể đã bị mất trong quá trình tuần tự hóa và thực hiện các tác vụ khởi tạo lại khác. Đây là một ví dụ từ

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
5

__serialize() và __unserialize()

serialize() kiểm tra xem lớp có chức năng hay không với phương thức ma thuật __serialize(). Nếu vậy, chức năng đó được thực thi đầu tiên trước bất kỳ tuần tự hóa nào

Ghi chú. Nếu cả __serialize() và __sleep() được xác định trong cùng một đối tượng, thì chỉ __serialize() sẽ được gọi và __sleep() sẽ bị bỏ qua

Phương thức __serialize() không chấp nhận tham số

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
6

Ví dụ

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
7

Ngược lại, unserialize() kiểm tra sự hiện diện của một hàm có tên ma thuật __unserialize(). Nếu có, hàm này sẽ được chuyển qua mảng đã khôi phục được trả về từ __serialize()

Phương thức __unserialize() chỉ chấp nhận một tham số

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
8

Ví dụ

class Student {
public function __destruct() {
echo "Destroy...";
}
}
echo "First...";
$student = new Student();
echo "Last...";
// output: First...Last...Destroy...
9

__toString()

Phương thức ma thuật __tostring() kích hoạt khi lớp được coi như một chuỗi. Phương thức không nhận tham số

public __call ( string $name , array $arguments ) : mixed
0

Ví dụ

public __call ( string $name , array $arguments ) : mixed
1

__gọi()

Phương thức ma thuật __invoke() được gọi khi đối tượng đang được gọi là một hàm. Phương thức chấp nhận nhiều tham số

public __call ( string $name , array $arguments ) : mixed
2

Ví dụ

public __call ( string $name , array $arguments ) : mixed
3

__dòng vô tính()

Phương thức ma thuật __clone() được kích hoạt khi nhân bản các đối tượng được thực hiện bằng cách sử dụng từ khóa clone. Phương thức không nhận tham số

public __call ( string $name , array $arguments ) : mixed
4

Ví dụ

public __call ( string $name , array $arguments ) : mixed
5

__debugInfo()

Phương thức ma thuật __debugInfo() được kích hoạt khi hàm var_dump được gọi. Phương thức không nhận tham số

Bạn có thể cho một ví dụ về một phương pháp kỳ diệu?

Một số ví dụ về phương pháp ma thuật là __init__, __len__, __repr__, __add__ , v.v.

Các phương pháp ma thuật PHP khác nhau là gì?

Danh sách các phương thức ma thuật PHP .
__xây dựng()
__destroy()
__call($fun, $arg)
__callStatic($fun, $arg)
__get($tài sản)
__set($property, $value)
__isset($nội dung)
__unset($nội dung)

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

Chúng là các phương thức đặc biệt mô tả cách một đối tượng nhất định sẽ hành xử. Chúng luôn được bao quanh bởi hai dấu gạch dưới (e. g. __init__ , __lt__ ). Dấu gạch dưới kép chỉ ra rằng đây là các phương thức ma thuật và lập trình viên không nên gọi trực tiếp, chúng thường được gọi bởi chính trình thông dịch

Có bao nhiêu hàm kỳ diệu trong PHP?

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. Có chín hằng ma thuật trong PHP.