tôi thấy câu lệnh switch lạ này trong Laravel 5 core:Không phải là tuyên bố chuyển đổi này là vô nghĩa?
switch (count($args)) {
case 0:
return $instance->$method();
case 1:
return $instance->$method($args[0]);
case 2:
return $instance->$method($args[0], $args[1]);
case 3:
return $instance->$method($args[0], $args[1], $args[2]);
case 4:
return $instance->$method($args[0], $args[1], $args[2], $args[3]);
default:
return call_user_func_array([$instance, $method], $args);
Có bất kỳ lý do tại sao họ có thể quyết định xây dựng một điều như vậy thay vì chỉ sử dụng này?
return call_user_func_array([$instance, $method], $args);
Bất kỳ lợi ích nào?
Có thể điều này đã được dịch từ một ngôn ngữ có chức năng quá tải. Hoặc, họ nhận thấy rằng có một sự tăng hiệu suất nhỏ trong các trường hợp phổ biến nhất (có lẽ là $ args là 4 hoặc ít hơn). –
Không có điều này là vô nghĩa .. ngôn ngữ như c + + hỗ trợ này và được gọi là quá tải chức năng của nó, ** Đa hình ** có thể đạt được thông qua quá tải –
@ NullPoiиteя Nhưng PHP không có quá tải chức năng. –