Đăng ký các phương thức Class dưới dạng hookbacks


16

Tôi không chắc chắn nếu tôi đã làm điều này một cách chính xác.

Như tôi hiểu nó:

nếu tôi có một lớp foo và một thanh phương thức tĩnh, tôi có thể đăng ký nó dưới dạng gọi lại bằng cách chuyển mảng array("foo","bar")dưới dạng tên hàm.

Nếu tôi có một thể hiện của một lớp trong $ foo và muốn gọi thanh phương thức, tôi sẽ truyền mảng array($foo,'bar').

Nếu tôi cần phải đăng ký một hành động bên trong lớp thì nó có hoạt động array($this,'bar')không?


3
Sẽ không một bài kiểm tra nhanh hơn đặt câu hỏi? ;) Có, bạn có thể làm điều này.
fuxia

2
Một bài kiểm tra có thể giúp đỡ, nhưng đôi khi bạn cũng tìm kiếm phản hồi. Tôi nghĩ thật sự ổn khi đặt câu hỏi, và có quy tắc này, đặt câu hỏi về động lực của OP ... :)
hakre

Câu trả lời:


11

Nếu tôi cần phải đăng ký một hành động bên trong lớp thì nó có hoạt động array($this, 'bar')không?

Có nó hoạt động. $thisDocs đang đề cập đến ví dụ cụ thể cần thiết cho cuộc gọi lại . Đó chính xác như $fooví dụ bạn đưa ra. Nó chỉ $thisđặc biệt hơn một chút, nhưng về cơ bản là giống nhau và nó hoạt động hoàn hảo với các cuộc gọi lại trong PHP.

Bổ sung:

nếu tôi có một lớp foo và một thanh phương thức tĩnh, tôi có thể đăng ký nó dưới dạng gọi lại bằng cách chuyển mảng array("foo","bar")dưới dạng tên hàm.

Có, bạn có thể làm như vậy, đối với hàm tĩnh, bạn có thể viết nó dưới dạng một chuỗi thay vì cả mảng : foo::bar, xem Callbacks Docs . Có thể có ích.


1

Đối với phương thức tĩnh, bạn cũng có thể làm điều này:

['foo','bar'] 

khi sau đây cung cấp hằng số lớp không xác định 'bar' :

foo::bar

ví dụ - khi chỉ định $ control_callback cho wp_add_dashboard_widget

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.