Hàm __ trong PHP là gì?

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các phương thức ma thuật PHP ghi đè các hành động mặc định khi đối tượng thực hiện các hành động

Giới thiệu về các phương thức ma thuật PHP

Các phương thức ma thuật PHP là các phương thức đặc biệt trong một lớp. Các phương thức ma thuật ghi đè các hành động mặc định khi đối tượng thực hiện các hành động

Theo quy ước, tên của các phương thức ma thuật bắt đầu bằng dấu gạch dưới kép (

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
6). Và PHP bảo lưu các phương thức có tên bắt đầu bằng dấu gạch dưới kép (

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
6) cho các phương thức ma thuật

Cho đến giờ, bạn đã học được rằng hàm tạo và hàm hủy sử dụng các phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
0 và

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
1. Trên thực tế, hàm tạo và hàm hủy cũng là các phương thức kỳ diệu

Phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
0 được gọi tự động khi đối tượng được tạo và phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
1 được gọi khi đối tượng bị xóa

Ngoài các phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
4 và

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
1, PHP còn có các phương thức thần kỳ sau

Magic MethodDescription__call() được kích hoạt khi gọi một phiên bản không thể truy cập method__callStatic() được kích hoạt khi gọi một phương thức tĩnh không thể truy cập__get() được gọi khi đọc giá trị từ thuộc tính không tồn tại hoặc không thể truy cập __set() được gọi khi ghi giá trị vào thuộc tính không . __sleep() __sleep() cam kết dữ liệu đang chờ xử lý__wakeup() được gọi khi unserialize() chạy để tái tạo lại bất kỳ tài nguyên nào mà một đối tượng có thể có. __serialize() Hàm serialize() gọi __serialize(), nếu có, đồng thời xây dựng và trả về một mảng kết hợp gồm các cặp khóa/giá trị đại diện cho dạng tuần tự hóa của đối tượng. __unserialize() Hàm unserialize() gọi __unserialize(), nếu có, và khôi phục các thuộc tính của đối tượng từ mảng được phương thức __unserialize() trả về. __toString() được gọi khi một đối tượng của một lớp được coi là một chuỗi. __invoke() được gọi khi một đối tượng được gọi là một hàm__set_state() được gọi cho một lớp được xuất bởi var_export()__clone() được gọi sau khi quá trình nhân bản hoàn tất__debugInfo() được gọi bởi

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
6 khi kết xuất một đối tượng để lấy các thuộc tính

Hướng dẫn này sẽ tập trung vào các phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7 và

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
8

Phương thức __set() trong PHP

Khi bạn cố ghi vào một thuộc tính không tồn tại hoặc không thể truy cập, PHP sẽ tự động gọi phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7. Sau đây là cú pháp của phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
1

Phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7 chấp nhận tên và giá trị của thuộc tính mà bạn ghi vào. Ví dụ sau minh họa cách sử dụng phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)

Làm thế nào nó hoạt động

  • Đầu tiên, định nghĩa lớp

    class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

    Code language: HTML, XML (xml)
    53 chỉ có một thuộc tính

    class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

    Code language: HTML, XML (xml)
    54. Nó sẽ chứa tất cả các thuộc tính của phần tử HTML e. g. , id và lớp
  • Thứ hai, khởi tạo hàm tạo với tên thẻ. Tên thẻ có thể là bất kỳ chuỗi nào, chẳng hạn như div, bài viết, chính và phần
  • Thứ ba, triển khai phương thức

    class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

    Code language: HTML, XML (xml)
    7 để thêm bất kỳ thuộc tính nào vào mảng

    class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

    Code language: HTML, XML (xml)
    56
  • Thứ tư, xác định phương thức

    class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

    Code language: HTML, XML (xml)
    57 trả về biểu diễn HTML của phần tử

Sau đây sử dụng lớp

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
53 và tạo một phần tử div mới

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
5

đầu ra

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
2

Đoạn mã sau cố gắng ghi vào thuộc tính không tồn tại

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
3

PHP gọi ngầm định phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
7 và thêm các thuộc tính này vào thuộc tính

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
56

Phương pháp PHPtag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }Code language: HTML, XML (xml)8

Khi bạn cố gắng truy cập một thuộc tính không tồn tại hoặc một thuộc tính không thể truy cập được. g. , thuộc tính riêng tư hoặc được bảo vệ, PHP sẽ tự động gọi phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
8

Phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
8 chấp nhận một đối số là tên của thuộc tính mà bạn muốn truy cập

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
9

Sau đây thêm phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
8 vào lớp

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
53

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
2

Phương thức

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
8 kiểm tra xem thuộc tính được yêu cầu có tồn tại trong

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
54 hay không trước khi trả về kết quả

Phần sau tạo một phần tử

class HtmlElement { private $attributes = []; private $tag; public function __construct($tag) { $this->tag = $tag; } public function __set($name, $value) { $this->attributes[$name] = $value; } public function html($innerHTML = '') { $html = "<{$this->tag}"; foreach ($this->attributes as $key => $value) { $html .= ' ' . $key . '="' . $value . '"'; } $html .= '>'; $html .= $innerHTML; $html .= "tag>"; return $html; } }

Code language: HTML, XML (xml)
28 mới, đặt thuộc tính id và lớp, sau đó hiển thị giá trị của các thuộc tính này

Việc sử dụng __ trong PHP là gì?

Trả về một chuỗi đã dịch nếu tìm thấy một chuỗi trong bảng dịch hoặc trả về thông báo đã gửi nếu không tìm thấy .

__ cuộc gọi () trong PHP là gì?

__call() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh đối tượng . __callStatic() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh tĩnh. Đối số $name là tên của phương thức được gọi.

__ được đặt trong PHP là gì?

Phương thức __set() của PHP . g. , id và lớp It will hold all the attributes of the HTML element e.g., id and class . Thứ hai, khởi tạo hàm tạo với tên thẻ. Tên thẻ có thể là bất kỳ chuỗi nào, chẳng hạn như div, bài viết, chính và phần. Thứ ba, triển khai phương thức __set() để thêm bất kỳ thuộc tính nào vào mảng $attribute.

Làm cách nào để sử dụng __ gọi trong PHP?

Phương thức __invoke() được gọi khi tập lệnh cố gắng gọi một đối tượng dưới dạng hàm . $obj = CallableClass mới;