Tôi gặp sự cố lạ với PHP OOP và nhập gợi ý. Dưới đây là ví dụ:OOP PHP "Việc triển khai phải tương thích"
abstract class AC {}
class C extends AC {}
interface I {
function method(AC $abstract);
}
class InterfaceImplementation implements I {
function method(C $concrete) {}
}
Mã này sẽ không chạy, nói rằng method
không tương thích với khai báo giao diện. Tôi nghĩ rằng nó tương thích kể từ khi C mở rộng AC - làm tôi bỏ lỡ một cái gì đó? Tôi dự kiến sẽ triển khai loại chức năng này như thế nào?
tôi sẽ không đồng ý đây là tương thích, 'bạn giao diện I' nghĩa một hợp đồng 'method' chấp nhận _any_' AC', không chỉ 'C' ... Tôi hết sức đồng mà' InterfaceImplementation' không trong thực tế triển khai 'I'. – Wrikken