Điều này có nghĩa là
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
5 chủ yếu được sử dụng để truy cập các thành viên mẫu [mặc dù nó cũng có thể được sử dụng để truy cập các thành viên tĩnh, nhưng việc sử dụng như vậy không được khuyến khích], trong khi đó, $ids = array_map[function [$post] {
return $post->id;
}, $posts];
6 thường được sử dụng để truy cập các thành viên tĩnh [mặc dù trong một số trường hợp đặc biệt, nó được sử dụng để truy cập các thành viên tĩnh]. Nói chung,
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
6 được sử dụng để phân giải phạm vi và nó có thể có tên lớp, $ids = array_map[function [$post] {
return $post->id;
}, $posts];
8, $ids = array_map[function [$post] {
return $post->id;
}, $posts];
9 hoặc [trong PHP 5. 3] $ids = array_map[function [$post] {
return $post->id;
}, $posts];
0 bên trái. $ids = array_map[function [$post] {
return $post->id;
}, $posts];
8 đề cập đến phạm vi siêu lớp của lớp mà nó được sử dụng; Hàm đóng ngắn, còn được gọi là hàm mũi tên, là một cách viết hàm ngắn hơn trong PHP. Ký hiệu này rất hữu ích khi chuyển các bao đóng cho các hàm như
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
4 hoặc $ids = array_map[function [$post] {
return $post->id;
}, $posts];
5Đây là những gì họ trông giống như
// A collection of Post objects
$posts = [/* … */];
$ids = array_map[fn[$post] => $post->id, $posts];
Trước đây, bạn phải viết cái này
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
Hãy tóm tắt cách sử dụng các khoảng đóng cửa ngắn
- Chúng có sẵn kể từ PHP 7. 4
- Họ bắt đầu với từ khóa
6$ids = array_map[function [$post] { return $post->id; }, $posts];
- Chúng chỉ có thể có một biểu thức, đó là câu lệnh return
- Không cho phép từ khóa
0$ids = array_map[function [$post] { return $post->id; }, $posts];
- Các đối số và kiểu trả về có thể được gợi ý kiểu
Một cách nghiêm ngặt hơn để viết ví dụ trên có thể là thế này
$ids = array_map[fn[Post $post]: int => $post->id, $posts];
Hai điều nữa cần đề cập
- Toán tử trải rộng cũng được phép
- Cho phép tham chiếu, cả đối số là giá trị trả về
Nếu bạn muốn trả về một giá trị theo tham chiếu, nên sử dụng cú pháp sau
fn&[$x] => $x
Nói tóm lại, các bao đóng ngắn cho phép các chức năng tương tự mà bạn mong đợi từ các bao đóng thông thường, ngoại trừ việc chỉ cho phép một biểu thức
Xem video mới nhất của tôi
PHP trong 1 phút
Không có nhiều dòng
Bạn đọc nó đúng. đóng cửa ngắn chỉ có thể có một biểu thức;
Lý do là như sau. mục tiêu của việc đóng cửa ngắn là để giảm tính dài dòng.
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
6 tất nhiên là ngắn hơn $ids = array_map[function [$post] {
return $post->id;
}, $posts];
2 trong mọi trường hợp. Tuy nhiên, Nikita Popov, người tạo ra RFC, lập luận rằng nếu bạn đang xử lý các hàm nhiều dòng, thì sẽ thu được ít lợi ích hơn bằng cách sử dụng các khoảng đóng ngắnXét cho cùng, việc đóng nhiều dòng theo định nghĩa đã dài dòng hơn;
Cho dù bạn đồng ý với tình cảm này là tùy thuộc vào bạn. Mặc dù tôi có thể nghĩ ra nhiều cách đóng một dòng trong các dự án của mình, nhưng cũng có rất nhiều cách đóng nhiều dòng và cá nhân tôi sẽ bỏ lỡ cú pháp ngắn trong những trường hợp đó
Có hy vọng mặc dù. có thể thêm các lần đóng ngắn nhiều dòng trong tương lai, nhưng đó là một RFC của riêng nó
Nhận thấy một tpyo? . Nếu bạn muốn cập nhật những gì đang diễn ra trên blog này, bạn có thể theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi. Đăng ký email
Giá trị từ phạm vi bên ngoài
Một sự khác biệt đáng kể khác giữa các lần đóng ngắn và thông thường là các lần đóng ngắn không yêu cầu từ khóa
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
5 để có thể truy cập dữ liệu từ phạm vi bên ngoài$modifier = 5;
array_map[fn[$x] => $x * $modifier, $numbers];
Điều quan trọng cần lưu ý là bạn không được phép sửa đổi các biến từ phạm vi bên ngoài. Các giá trị bị ràng buộc bởi giá trị và không theo tham chiếu. Điều này có nghĩa là bạn có thể thay đổi
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
6 trong phạm vi đóng ngắn, mặc dù nó sẽ không ảnh hưởng đến biến $ids = array_map[function [$post] {
return $post->id;
}, $posts];
6 ở phạm vi bên ngoàiTất nhiên, có một ngoại lệ là từ khóa
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
8, hoạt động giống hệt như các bao đóng bình thường$ids = array_map[function [$post] {
return $post->id;
}, $posts];
3khả năng trong tương lai
Tôi đã đề cập đến việc đóng cửa ngắn nhiều dòng, đây vẫn là một khả năng trong tương lai. Một ý tưởng khác nổi xung quanh là cho phép cú pháp đóng ngắn trong các lớp, ví dụ như đối với getters và setters
$ids = array_map[function [$post] {
return $post->id;
}, $posts];
4Nói chung, đóng cửa ngắn là một tính năng đáng hoan nghênh, mặc dù vẫn còn chỗ để cải thiện. Cái lớn nhất có lẽ là sự đóng cửa ngắn nhiều dòng