Sau nhiều năm hạnh phúc được viết mã trong notepad ++ và tuyệt vời, tôi đã khuyên bạn nên cung cấp một IDE PHP. Tôi đang thử phpStorm và nó có vẻ tốt đẹp. Hoàn thành mã và tài liệu là một tính năng tuyệt vời nhưng không hoạt động đối với tôi khi các phương pháp ma thuật được sử dụng. Có một công việc xung quanh để có được phpStorm để hiểu những gì đang xảy ra trong các phương pháp ma thuật?Cách viết các phương thức ma thuật (_call và _callStatic) cho các IDE
tình hình của chúng tôi là một cái gì đó như thế này:
abstract class a {
public static function __callStatic($method,$args)
{
if(strpos($method,"get_by_") === 0)
{
//do stuff
} elseif(strpos($method,"get_first_by_") === 0) {
//do stuff
} elseif($method == "get_all") {
//do stuff
}
}
}
class b extends a {
// some more stuff
}
b::get_by_user_id(27);
b::get_first_by_id(156);
b::get_all();
Phương pháp callStatic ma thuật cho phép chúng tôi để có được một bộ sưu tập của các đối tượng thông qua 1 hay nhiều đối số tạo nên gọi hàm.
Tôi thấy rằng có một câu lệnh @method để sử dụng trong những trường hợp này nhưng phpStorm chỉ chọn lên đầu tiên của các câu lệnh này. Hơn nữa tôi chỉ có thể thiết lập kiểu trả về thành hỗn hợp khi tôi muốn có thể thiết lập nó như bất cứ lớp nào mà nó được gọi là (b trong ví dụ của tôi).
Bất kỳ ý tưởng hoặc đề xuất nào cũng sẽ rất biết ơn, cảm ơn.
TẠI SAO NÊN NÓI CHỌN R THNG R ONG ĐIỀU KIỆN '_call' LÀ MỘT Ý TƯỞNG TỐT? !! –
Phải nói, đã +1 nhận xét của Brian trong trường hợp mọi người sane sẽ tìm câu hỏi này. Các phương thức ma thuật dành cho tất cả các ý định và mục đích: không thể ghi lại được (cố gắng ghi lại một tham số (n) [tham số | điều kiện tiên quyết | postcondtion | exception] với một phương thức ma thuật), chứ không phải IDE thân thiện (cố gắng gỡ lỗi một phương pháp ma thuật), khả năng tái cấu trúc (xin vui lòng, thậm chí không xem xét cố gắng để tái cấu trúc một phương pháp ma thuật trong một phần mềm được bảo hiểm), và LAZY (ok, người cuối cùng có thể được hiểu là một ý kiến). –
-1 cho ý kiến trong nhận xét của @ LukeA.Leber vì nó chứng minh sự thiếu tầm nhìn. Trong khi các phương pháp ma thuật không phải là cách để viết ít mã hơn (nếu bạn sử dụng chúng để lười), các phương pháp ma thuật làm cho các kiến trúc có thể đơn giản nếu không có thể hoặc sẽ phức tạp đến nỗi nó sẽ không đáng để viết. Và chúng hoàn toàn thân thiện với IDE khi sử dụng PHPDoc. Lưu ý rằng hầu hết thời gian bạn không cần các phương pháp ma thuật, nhưng khi bạn cần chúng không có thay thế (bằng PHP.) Khi chúng được sử dụng một cách rất có cấu trúc sử dụng chúng là một giải pháp hợp lệ hoàn thành. – MikeSchinkel