Khi nào sử dụng gọi PHP?

Đây là một câu hỏi hay và tôi cũng đang cố gắng tìm cách sử dụng nó, vì vậy tôi đã tìm kiếm một lúc và tìm thấy câu hỏi này trên StackOverflow

ngăn xếp chồng lên nhau. com

PHP5. 3 Phương pháp ma thuật __invoke

php, oop, phương pháp ma thuật

được hỏi bởi người dùng83632 vào ngày 01. 56PM - 20/05/09 UTC

Trích dẫn ở đây để tiết kiệm thời gian cho mọi người

[quote]PHP không cho phép truyền con trỏ hàm như các ngôn ngữ khác. Các hàm không phải là hạng nhất trong PHP. Các hàm hạng nhất chủ yếu có nghĩa là bạn có thể lưu một hàm vào một biến, chuyển nó đi khắp nơi và thực thi nó bất cứ lúc nào

Phương thức __invoke là một cách mà PHP có thể chứa các hàm giả hạng nhất

Phương thức __invoke có thể được sử dụng để chuyển một lớp có thể hoạt động như một sự đóng hoặc một phần tiếp theo, hoặc đơn giản là một hàm mà bạn có thể chuyển qua

Rất nhiều lập trình chức năng dựa trên các chức năng hạng nhất. Ngay cả lập trình mệnh lệnh bình thường cũng có thể hưởng lợi từ điều này

Giả sử bạn có thói quen sắp xếp, nhưng muốn hỗ trợ các hàm so sánh khác nhau. Chà, bạn có thể có các lớp so sánh khác nhau triển khai hàm __invoke và chuyển các thể hiện của lớp đó sang hàm sắp xếp của bạn và nó thậm chí không cần biết tên của hàm

Thực sự, bạn luôn có thể làm điều gì đó như truyền một lớp và để một hàm gọi một phương thức, nhưng bây giờ bạn gần như có thể nói về việc truyền một “hàm” thay vì truyền một lớp, mặc dù nó không rõ ràng như trong các ngôn ngữ khác. [/trích dẫn]

Vì vậy, lấy ví dụ của anh ấy, vì đây không phải là một kỹ thuật mà tôi sẽ nghĩ ra để làm ví dụ cho anh ấy, cá nhân tôi sẽ chuyển vào một Giao diện. Vì vậy, có thể gọi nó là ISort, mà các lớp sắp xếp khác nhau của tôi thực hiện, và do đó khi tôi chuyển nó sang một lớp khác, nó chỉ cần biết rằng nó có thể gọi $a->Sort($parm1, $parm2); và thế là xong

Tôi đoán __invoke cho phép bạn làm điều này thay thế (ngoại trừ việc tôi không biết liệu bạn có thể chuyển tham số cho __invoke hay không)

$a($parm1, $parm2);

Tôi không chắc mình thấy được toàn bộ lợi ích

Sau đây cũng có một ví dụ, nhưng một lần nữa, đó không phải là điều tôi thấy “cần thiết”…

Khi nào sử dụng gọi PHP?
LornaJane – 10 tháng 7 12

Khi nào sử dụng gọi PHP?

Phương thức __invoke() kỳ diệu của PHP và Typehint có thể gọi được

PHP có nhiều phương pháp kỳ diệu; . Trong PHP5. 3, một phương pháp ma thuật mới đã được thêm vào. __invo…

function sparkles(Callable $func) {
  $func();
  return "fairy dust";
}
 
class Butterfly {
  public function __invoke() {
    echo "flutter";
  }
}
 
$bob = new Butterfly();
echo sparkles($bob); // flutterfairy dust

Phải có một lý do tốt hơn để sử dụng cái này mà tôi không nghĩ đến

Khi nào sử dụng gọi PHP?
cpradio

Bạn có bất kỳ mã nào trên GitHub đang sử dụng __invoke không?

Tại thời điểm này, tôi không có kế hoạch triển khai plugin và hệ thống tác vụ theo lịch trình trong khuôn khổ vẫn đang được phát triển của mình, hệ thống này sẽ sử dụng __invoke() giống như đại biểu C#. Tôi không thể hiển thị bất kỳ mã nào ngay bây giờ, cho đến khi tôi thực sự có nó, nhưng có một số trường hợp sử dụng khác mà các lập trình viên PHP chuyên nghiệp đã đưa ra

Đây là một từ Lorna Mitchell

Khi nào sử dụng gọi PHP?
LornaJane – 10 tháng 7 12

Khi nào sử dụng gọi PHP?

Phương thức __invoke() kỳ diệu của PHP và Typehint có thể gọi được

PHP có nhiều phương pháp kỳ diệu; . Trong PHP5. 3, một phương pháp ma thuật mới đã được thêm vào. __invo…

Đây là một cái khác của Bence Eros

Khi nào sử dụng gọi PHP?
sự dâm dục. blogspot. com

Sử dụng __invoke() trong PHP 5. 3

Trong PHP5. 3 một trong những phương pháp ma thuật mới là __invoke(). PHP5. 3. 0 không thực sự là một thứ mới nhưng tôi chưa thấy ai sử dụng __invoke(). TÔI

Và một tác phẩm khác của Jose Da Silva
http. //Blog. josedasilva. net/revisiting-php-5-3-__invoke-magic-method/

Như bạn có thể thấy, các đối tượng không thể triệu hồi có thể phục vụ cùng mục đích đóng như chức năng gọi lại. Bởi vì nó được định nghĩa trong một lớp và phụ thuộc vào thể hiện của một lớp, nên nó thực sự có thể tái sử dụng và thậm chí có thể hỗ trợ tính đa hình. Tất nhiên, tôi có thể không đúng và có thể có nhiều cách tốt hơn để đạt được điều này hơn là sử dụng __invoke(), nhưng ít nhất nó cũng đưa ra một giải pháp rất thuận tiện cho một số vấn đề. Trên thực tế, nếu ai đó có ý tưởng hay hơn, tôi cũng rất vui khi được học, vì __invoke() rốt cuộc là một phương pháp kỳ diệu và do đó, ở một mức độ nào đó, tôi sẽ bị đau đầu về hiệu suất

Khi nào sử dụng gọi PHP?
Hall_of_Famer

Như bạn có thể thấy, các đối tượng không thể triệu hồi có thể phục vụ cùng mục đích đóng như chức năng gọi lại. Bởi vì nó được định nghĩa trong một lớp và phụ thuộc vào thể hiện của một lớp, nên nó thực sự có thể tái sử dụng và thậm chí có thể hỗ trợ tính đa hình. Tất nhiên, tôi có thể không đúng và có thể có nhiều cách tốt hơn để đạt được điều này hơn là sử dụng __invoke(), nhưng ít nhất nó cũng đưa ra một giải pháp rất thuận tiện cho một số vấn đề. Trên thực tế, nếu ai đó có ý tưởng hay hơn, tôi cũng rất vui khi được học, vì __invoke() rốt cuộc là một phương pháp kỳ diệu và do đó, ở một mức độ nào đó, tôi sẽ bị đau đầu về hiệu suất

Vì vậy, điều này trở lại

Khi nào sử dụng gọi PHP?
cpradio

Bạn chỉ muốn thực hiện nó mà không cần biết gì về nó

Phải?

Tôi không nói rằng không có chỗ cho điều đó, nhưng đó là kịch bản lý tưởng để sử dụng __invoke(), phải không?

Tôi đoán là tôi không viết nhiều đơn mà tôi không muốn biết mình đang nhận được gì (hoặc không muốn biết). Về mặt kỹ thuật, tôi không biết mình đang nhận được gì, tôi biết đối tượng được gửi cho tôi thực hiện hợp đồng sau (nhưng tôi không thực sự biết đối tượng là gì). Tôi sử dụng các giao diện rất nhiều để thiết lập các hợp đồng về cách mọi thứ nên hoạt động/thực thi và truyền các đối tượng theo cách đó, vì vậy tôi có một “kế hoạch” đã thiết lập để thực thi chúng

Việc sử dụng lời gọi trong PHP là gì?

Phương thức phản chiếu. Hàm Invoke() là một hàm có sẵn trong PHP được sử dụng để gọi phương thức được phản ánh đã chỉ định và trả về kết quả của phương thức . Thông số. Hàm này chấp nhận hai tham số được minh họa bên dưới. sự vật. Đây là đối tượng lớp khởi tạo.

Cách đúng để gọi một phương thức trong PHP là gì?

Để gọi một phương thức trên một đối tượng, bạn chỉ cần gọi tên đối tượng theo sau là "->" rồi gọi phương thức đó . Vì đó là một câu lệnh, bạn đóng nó bằng dấu chấm phẩy. Khi bạn đang xử lý các đối tượng trong PHP, "->" hầu như luôn được sử dụng để truy cập đối tượng đó, cho dù đó là một thuộc tính hay để gọi một phương thức.

__ 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.

__thức dậy() trong PHP là gì?

Phương thức ma thuật __wakeup của PHP nên được dùng để khởi tạo đối tượng được tạo lại sau khi hàm unserialize được gọi . Mã khôi phục hoặc tạo lại các loại tài nguyên PHP phải ở đây, cũng như mã khôi phục bất kỳ loại thuộc tính cần thiết nào khác không được phương thức __sleep trả về.