Mũi tên PHP là gì?

Đ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
    $ids = array_map[function [$post] {
        return $post->id;
    }, $posts];
    6
  • 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
    $ids = array_map[function [$post] {
        return $post->id;
    }, $posts];
    0
  • 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ắn

Xé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ài

Tấ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];
3

khả 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];
4

Nó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

Đâu là sự khác biệt giữa

Hơn nữa, toán tử mũi tên kép => gán giá trị cho khóa mảng . Toán tử ->, còn được gọi là toán tử đối tượng được sử dụng để truy cập các thuộc tính và phương thức cho một đối tượng cụ thể. Ngoài ra, nói một cách đơn giản, toán tử đối tượng -> chịu trách nhiệm truy cập một phương thức đối tượng.

Lambda và mũi tên là gì?

Hàm Arrow/ lambda là dạng ngắn gọn của một hàm thông thường trong Bản mô tả . Hàm mũi tên còn được gọi là hàm lambda. Chúng tôi sử dụng “=>” [ký hiệu mũi tên] trong chức năng mũi tên và chúng tôi không sử dụng từ khóa 'hàm'. Chúng ta có thể sử dụng phương pháp này khi chúng ta muốn mã của mình ngắn gọn và không gọi hàm mỗi lần.

Mũi tên trong DART là gì?

Trong Dart, chúng ta có ký hiệu mũi tên mập [ => ]. Mũi tên mập được sử dụng để xác định một biểu thức duy nhất trong một hàm . Đây là một cách rõ ràng hơn để viết các hàm với một câu lệnh duy nhất.

Làm thế nào để liên kết mũi tên hoạt động?

Về cơ bản trong hàm Mũi tên, điều này luôn đại diện cho đối tượng trong đó hàm mũi tên được xác định. Cú pháp mũi tên tự động liên kết điều này với ngữ cảnh của mã xung quanh bên dưới . Trong chức năng Mũi tên, nó không phụ thuộc vào cách chúng được gọi mà nó đóng vào ngữ cảnh xung quanh.

Chủ Đề