Vì vậy, method_exists()
yêu cầu một đối tượng để xem liệu phương thức có tồn tại hay không. Nhưng tôi muốn biết nếu một phương thức tồn tại từ bên trong cùng một lớp.Kiểm tra xem phương thức có tồn tại trong cùng một lớp
Tôi có một phương thức xử lý một số thông tin và có thể nhận được một hành động, chạy một phương thức để xử lý thêm thông tin đó. Tôi muốn kiểm tra xem phương pháp tồn tại trước khi gọi nó. Làm thế nào tôi có thể đạt được nó?
Ví dụ:
class Foo{
public function bar($info, $action = null){
//Process Info
$this->$action();
}
}
Các câu trả lời dưới đây là tốt, chỉ cần một nhận xét bổ sung: bạn đã tự hỏi mình _why_ bạn cần phải tìm hiểu xem phương pháp tồn tại? Tình huống này _may_ phát sinh nếu bạn có một phương thức được kế thừa từ một lớp cha hoặc nếu bạn không chắc chắn về những gì lớp hiện tại kế thừa từ đó. Cả hai trường hợp đều có thể được xử lý bằng cách sử dụng một giao diện hoặc một định nghĩa phương thức trừu tượng. Đó là minh bạch hơn và di chuyển các lỗi từ thời gian chạy để biên dịch thời gian, do đó là thích hợp hơn. – arkascha
Bởi vì tôi có một số phương thức khác được công khai và xử lý thông tin đó và trả về dữ liệu đã xử lý, phương thức đầu tiên không trả về, vì nó có thể nhận dữ liệu chỉ cần xử lý và không cần trả lại bất kỳ thứ gì. Nhưng tôi nghĩ nó sẽ tiết kiệm thời gian để gọi phương thức khác từ phương pháp fisrt nếu cần, nhưng vẫn có thể gọi chúng là tách biệt. – Rafael
Nhưng bên trong bản thân lớp học, tại sao nó không được rõ ràng nếu một phương pháp tồn tại? Tôi có nghĩa là nó _is_ tuyên bố/thực hiện trong lớp hoặc nó không phải là. Làm thế nào và tại sao điều đó nên thay đổi khi chạy? Tôi muốn nói bạn biết chính xác nếu phương pháp tồn tại. – arkascha