Chức năng mũi tên php dưới dạng gọi lại
Bạn sẽ thấy tính năng lớn đầu tiên hoặc ES2015 được sử dụng ở mọi nơi. và lúc đầu, nó có vẻ kỳ lạ. Rất đơn giản, có một cú pháp mới, ngắn hơn để tạo các hàm ẩn danh Show Ví dụ: trong dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 31loadRepLogs. function() {var self = this;$. ajax({url. Lộ trình. tạo ('rep_log_list'),}). sau đó (hàm (dữ liệu) {$. mỗi (dữ liệu. mục, chức năng(key, repLog) {self. _addRow(repLog);});})},. dòng 42 - 173});. dòng 175 - 191})(cửa sổ, jQuery, Định tuyến, swal); Trong ES2015, chúng tôi có thể xóa từ dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 31loadRepLogs. function() {var self = this;$. ajax({url. Lộ trình. tạo ('rep_log_list'),}). sau đó ((dữ liệu) => {$. mỗi (dữ liệu. mục, chức năng(key, repLog) {self. _addRow(repLog);});})},. dòng 42 - 173});. dòng 175 - 191})(cửa sổ, jQuery, Định tuyến, swal); Đó là nó. Điều đó sẽ làm chính xác điều tương tự như trước đây. Chà, PhpStorm thực sự tức giận về điều này, nhưng hãy bỏ qua nó trong giây lát. Hãy thử nó. Hàm Nó hoạt động. không có lỗi Nhưng, rõ ràng PhpStorm ghét chức năng mũi tên. Đó là bởi vì nó được thiết lập để chỉ nhận ra JavaScript ES5 cũ Đi vào cài đặt của bạn và tìm kiếm ES6. Trong "Ngôn ngữ & Khung", "JavaScript", bạn có thể chọn phiên bản sẽ sử dụng. Hãy bắt đầu với "ECMAScript 6". nhấn ok. và sau khi lập chỉ mục xong. đinh. Nó hạnh phúc. Và tôi cũng hạnh phúc Nếu bạn thấy bong bóng về "Trình theo dõi tệp để chuyển mã bằng Babel", hãy bỏ qua điều đó. Nhưng, chúng ta sẽ nói về thứ "Babel" đó sau, nó không chỉ là một từ nghe có vẻ hay ho. Ba-bên Vì vậy, cú pháp mũi tên không có gì đáng kinh ngạc. Nhưng nó được sử dụng rất nhiều, vì vậy bạn cần luyện mắt để nhận ra rằng đó chỉ là một chức năng ẩn danh Và đôi khi, nó có thể trông hơi khác một chút. Ví dụ, các dấu ngoặc đơn xung quanh các đối số? . Không có họ, mọi thứ vẫn hoạt động dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 31loadRepLogs. function() {var self = this;$. ajax({url. Lộ trình. tạo ('rep_log_list'),}). sau đó (dữ liệu => {$. mỗi (dữ liệu. mục, chức năng(key, repLog) {self. _addRow(repLog);});})},. dòng 42 - 173});. dòng 175 - 191})(cửa sổ, jQuery, Định tuyến, swal); Tôi thích dấu ngoặc đơn. Tôi cảm thấy như nó mang lại cho chức năng mũi tên của tôi cấu trúc hơn một chút. Nhưng mã khác có thể không có chúng Bây giờ nếu đây là tất cả chức năng mũi tên đã làm, tôi sẽ khá thất vọng. Rốt cuộc, chúng ta có thực sự cần một cú pháp mới, chỉ để giúp chúng ta không phải gõ từ chức năng? Để thể hiện điều đó, bên trong hàm ẩn danh, dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 31loadRepLogs. function() {var self = this;$. ajax({url. Lộ trình. tạo ('rep_log_list'),}). sau đó (dữ liệu => {bảng điều khiển. nhật ký (cái này, bản thân);. dòng 38 - 40})},. dòng 43 - 174});. dòng 176 - 192})(cửa sổ, jQuery, Định tuyến, swal); Chúng tôi biết rằng bên trong một chức năng ẩn danh, Ok, tìm trình duyệt của bạn và làm mới. Ồ, hãy xem cái này. Hóa ra, hàm ẩn danh cổ điển và hàm mũi tên mới có một điểm khác biệt. khi bạn sử dụng hàm mũi tên, biến Cuối cùng chúng ta cũng có thể loại bỏ thứ dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 31loadRepLogs. hàm() {$. ajax({url. Lộ trình. tạo ('rep_log_list'),}). sau đó (dữ liệu => {$. mỗi (dữ liệu. các mục, (khóa, repLog) => {cái này. _addRow(repLog);});})},. dòng 41 - 172});. dòng 174 - 190})(cửa sổ, jQuery, Định tuyến, swal); Hãy thử điều đó. Nó vẫn làm việc Hãy sử dụng cú pháp mũi tên ở mọi nơi. Dưới đây, khi chúng tôi sử dụng SweetAlert, hãy xóa biến dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 47handleRepLogDelete. hàm (e) {. dòng 49 - 52swal({. dòng 54 - 57preConfirm. () => {trả lại cái này. _deleteRepLog($link);}}). bắt ((arg) => {});},. dòng 65 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Ở đây, chúng tôi không sử dụng Tiếp tục đi. Bên trong phương pháp tiếp theo, loại bỏ dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 65_deleteRepLog. hàm($link) {. dòng 67 - 78}). sau đó (() => {. dòng 80 - 83})},. dòng 86 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Làm tương tự cho dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 65_deleteRepLog. hàm($link) {. dòng 67 - 78}). then(() => {$hàng. fadeOut('bình thường', () => {$hàng. tháo cái này. updateTotalWeightLifted();});})},. dòng 86 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Kiểm tra kỹ xem mọi thứ có hoạt động không. Làm mới. Xóa một trong các mục và. hoàn hảo Vì chúng ta sẽ sử dụng các hàm mũi tên cho tất cả các hàm ẩn danh, hãy tìm kiếm dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 90handleNewFormSubmit. hàm(e) {. dòng 92 - 95$. mỗi ($ mẫu. serializeArray(), (key, fieldData) => {. dòng 97});. dòng 99 - 106},. dòng 108 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Lặp lại lần nữa và xóa một biến dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 90handleNewFormSubmit. hàm(e) {. dòng 92 - 100. sau đó ((dữ liệu) => {điều này. _clearForm(); cái này. _addRow(dữ liệu);}). bắt ((errorData) => {điều này. _mapErrorsToForm(lỗiDữ liệu. lỗi);});},. dòng 108 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Tôi sẽ tua nhanh qua phần còn lại của các thay đổi Nếu bạn đang theo dõi thực sự chặt chẽ, bạn có thể nhận thấy một vấn đề. Trước đây, bên trong cuộc gọi lại dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 178$. mở rộng (Trợ giúp. nguyên mẫu, {tínhTotalWeight. hàm số() {. dòng 181 này. $wrapper. tìm ('tbody tr'). mỗi (function () {totalWeight += $(this). dữ liệu ('trọng số');});. dòng 185 - 186}});})(window, jQuery, Routing, swal); Nhưng bây giờ chúng tôi đang sử dụng chức năng mũi tên, rõ ràng là nó sẽ không hoạt động. Đừng lo lắng. Chỉ cần cung cấp cho hàm mũi tên của bạn hai đối số. dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 178$. mở rộng (Trợ giúp. nguyên mẫu, {tínhTotalWeight. hàm số() {. dòng 181 này. $wrapper. tìm ('tbody tr'). mỗi ((chỉ mục, phần tử) => {totalWeight += $(phần tử). dữ liệu ('trọng số');});. dòng 185 - 186}});})(window, jQuery, Routing, swal); Nếu chúng tôi tìm kiếm dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 129_mapErrorsToForm. hàm (lỗiDữ liệu) {. dòng 131 - biểu mẫu 133$. tìm thấy('. đầu vào'). mỗi ((chỉ mục, phần tử) => {var fieldName = $(phần tử). attr('tên');var $wrapper = $(phần tử). gần nhất('. nhóm biểu mẫu');. dòng 137 - 145});},. dòng 148 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Bây giờ chúng tôi đang sử dụng chức năng mũi tên ở mọi nơi, có một biến thể khác mà bạn sẽ thấy. Cuộn ngược lên và tìm tùy chọn dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 47handleRepLogDelete. hàm (e) {. dòng 49 - 52swal({. dòng 54 - 57preConfirm. () => {trả lại cái này. _deleteRepLog($link);}. dòng 61 - 62});},. dòng 65 - 170});. dòng 172 - 188})(cửa sổ, jQuery, Định tuyến, swal); Trong trường hợp này, chức năng mũi tên không gì khác hơn là một câu lệnh dòng 1 - 2(function(window, $, Routing, swal) {. dòng 4 - 26$. mở rộng (cửa sổ. RepLogApp. nguyên mẫu, {. dòng 28 - 47handleRepLogDelete. hàm (e) {. dòng 49 - 52swal({. dòng 54 - 57preConfirm. () => cái này. _deleteRepLog($link). dòng 59 - 60});},. dòng 63 - 168});. dòng 170 - 186})(cửa sổ, jQuery, Định tuyến, swal); Khi bạn không có dấu ngoặc nhọn, điều đó có nghĩa là giá trị này sẽ được trả về. Thoạt nhìn có vẻ lạ, nhưng nó có nghĩa giống như những gì chúng ta đã biết trước đây. Bạn sẽ thấy loại nội dung này trong các ví dụ về mã Phù. Sau khi thực hiện tất cả những thay đổi này, hãy làm mới và thử chúng. Danh sách tải, chúng tôi có thể xóa và biểu mẫu vẫn hợp lệ. chuối PHP có hỗ trợ chức năng mũi tên không?Hàm mũi tên chỉ khả dụng trong phiên bản PHP 7. 4 trở lên . Các hàm mũi tên có quyền truy cập vào tất cả các biến từ phạm vi mà chúng được tạo.
Làm cách nào để sử dụng các hàm mũi tên trong PHP?Cả hàm ẩn danh và hàm mũi tên đều được triển khai bằng lớp Đóng. Hàm mũi tên có dạng cơ bản fn (argument_list) => expr . Các hàm mũi tên hỗ trợ các tính năng giống như các hàm ẩn danh, ngoại trừ việc sử dụng các biến từ phạm vi gốc luôn tự động.
Làm cách nào để tạo hàm gọi lại trong PHP? |