Làm cách nào để ghi đè một chức năng trong PHP?
5 năm trước bởi Ryan Jentzsch — xem nguồn chưa đọc Show Tôi biết Trình gỡ lỗi PHP nâng cao nhưng tôi cần loại trình gỡ lỗi này Để làm ví dụ, tôi muốn sử dụng tính năng mô phỏng PHPUnit để tạo mô phỏng của một $result = file_get_contents('php. //đầu vào'); Tôi không thể ghi đè chức năng Điều này thật khó xử và trong trường hợp sử dụng của tôi, hàm tạo cũng thực hiện các cuộc gọi đến ADP không được chấp nhận để ghi đè các chức năng ở chỗ nó yêu cầu mã nhị phân để Có RFC nào mà tôi không tìm thấy cho phép dễ dàng ghi đè @function file_get_contents($string) Kỹ năng C của tôi khá kém và việc hiểu công cụ Zend là một điều khó khăn chưa đọc Tôi biết Trình gỡ lỗi PHP nâng cao nhưng tôi cần loại trình gỡ lỗi này Để làm ví dụ, tôi muốn sử dụng tính năng mô phỏng PHPUnit để tạo mô phỏng của một $result = file_get_contents('php. //đầu vào'); Tôi không thể ghi đè chức năng Điều này thật khó xử và trong trường hợp sử dụng của tôi, hàm tạo cũng thực hiện các cuộc gọi đến ADP không được chấp nhận để ghi đè các chức năng ở chỗ nó yêu cầu mã nhị phân để Có RFC nào mà tôi không tìm thấy cho phép dễ dàng ghi đè @function file_get_contents($string) Kỹ năng C của tôi khá kém và việc hiểu công cụ Zend là một điều khó khăn Đã có runkit và uopz cho phép ghi đè hiện có -- chưa đọc Để làm ví dụ, tôi muốn sử dụng tính năng mô phỏng PHPUnit để tạo mô phỏng của một $result = file_get_contents('php. //đầu vào'); Tôi không thể ghi đè chức năng Câu trả lời ngắn. Không. Không có RFC hiện tại, khả thi cho mục đích này -Sara chưa đọc
Nếu đang sử dụng không gian tên, bạn có thể thử ghi đè các hàm tích hợp Bài viết gốc về ý tưởng
Có thư viện php-mock, dường như có tích hợp cho https. //github. com/php-mock/php-mock daveDavid Lundgren chưa đọc
Không, nhưng có một phần mở rộng. https. //pecl. php. mạng/gói/uopz Tuy nhiên, tôi tin rằng người duy trì nó khuyên bạn nên tránh sử dụng nó
Cách giải quyết của bạn là giải pháp tồi cho vấn đề sai Cố gắng kiểm tra đơn vị những thứ tương tác với thế giới thực là Một điều tốt hơn nhiều nên làm là cô lập các lớp bên trong của giao diện InputReader { lớp PhpInputReader triển khai InputReader { Và sau đó đưa vào một phiên bản giả của InputReader khi bạn đang thực hiện Và chỉ để được rõ ràng; Có một bài nói chuyện của một người tên là J B Rainsberger đã giúp tôi Tôi thực sự khuyên bạn nên xem nó cho bất cứ ai đang nghĩ rằng hoan hô chưa đọc
Đã có runkit và uopz cho phép ghi đè hiện có
-- chưa đọc
Nếu đang sử dụng không gian tên, bạn có thể thử ghi đè các hàm tích hợp Bài viết gốc về ý tưởng
Có thư viện php-mock, dường như có tích hợp cho https. //github. com/php-mock/php-mock daveDavid Lundgren chưa đọc
Không, nhưng có một phần mở rộng. https. //pecl. php. mạng/gói/uopz Tuy nhiên, tôi tin rằng người duy trì nó khuyên bạn nên tránh sử dụng nó
Cách giải quyết của bạn là giải pháp tồi cho vấn đề sai Cố gắng kiểm tra đơn vị những thứ tương tác với thế giới thực là Một điều tốt hơn nhiều nên làm là cô lập các lớp bên trong của giao diện InputReader { lớp PhpInputReader triển khai InputReader { Và sau đó đưa vào một phiên bản giả của InputReader khi bạn đang thực hiện Và chỉ để được rõ ràng; Có một bài nói chuyện của một người tên là J B Rainsberger đã giúp tôi Tôi thực sự khuyên bạn nên xem nó cho bất cứ ai đang nghĩ rằng hoan hô Chức năng ghi đè trong PHP là gì?Trong ghi đè hàm, cả lớp cha và lớp con phải có cùng tên hàm và số đối số. Nó dùng để thay thế phương thức cha trong lớp con . Mục đích của việc ghi đè là thay đổi hành vi của phương thức lớp cha. Hai phương thức có cùng tên và cùng tham số được gọi là ghi đè.
PHP có nạp chồng hàm không?Nạp chồng hàm trong PHP được sử dụng để tạo động các thuộc tính và phương thức. Các thực thể động này được xử lý bằng các phương thức ma thuật có thể được sử dụng trong một lớp cho các loại hành động khác nhau. Nạp chồng hàm chứa cùng một tên hàm và hàm đó thực hiện các tác vụ khác nhau tùy theo số lượng đối số
Chúng ta có thể ghi đè các thuộc tính trong PHP không?Có thể ghi đè thuộc tính của lớp cha từ lớp con không? . Điều không thể thực hiện được là gọi $obj->aa(); . Yes. What is not possible is calling $obj->aa(); from $obj->bb(); because $obj->aa(); is defined in the child class.
Làm cách nào bạn có thể tạo một phương thức Không thể ghi đè trong PHP?Tránh ghi đè phương thức
. using the keyword final infront of the method name prevents it from being overriden. |