Câu trả lời:
Không có sự khác biệt - chúng giống nhau.
Hướng dẫn sử dụng PHP cho exit
:
Lưu ý: Cấu trúc ngôn ngữ này tương đương với
die()
.
Hướng dẫn sử dụng PHP cho die
:
Cấu trúc ngôn ngữ này tương đương với
exit()
.
die
cho các điểm dừng liên quan đến lỗi và exit
cho tất cả các kịch bản khác. Nó chỉ có vẻ chảy tốt hơn khi đọc mã.
die
viết nhanh hơn nhiều so với exit
... Tôi bắt đầu sử dụng exit
vì nó dễ đọc hơn đối với các lập trình viên PHP, nhưng die
chỉ gõ nhanh hơn khi bạn vào vội vàng. Ngoài ra, bằng cách tôi gõ, tôi không phải thay đổi vị trí của bàn tay để viết die
.
Sự khác biệt giữa die()
và exit()
trong PHP là nguồn gốc của chúng .
exit()
là từ exit()
trong C .die()
là từ die
trong Perl .die()
và exit()
là các chức năng tương đương.
Hướng dẫn sử dụng PHP cho die
:
Cấu trúc ngôn ngữ này tương đương với
exit()
.
Hướng dẫn sử dụng PHP cho exit
:
Lưu ý: Cấu trúc ngôn ngữ này tương đương với
die()
.
Hướng dẫn PHP cho danh sách các bí danh hàm :
die()
và exit()
là khác nhau trong các ngôn ngữ khác nhưng trong PHP họ giống hệt nhau.
... Là một lập trình viên C và Perl, tôi đã sẵn sàng trả lời: "Tại sao, exit () chỉ bảo vệ chương trình với trạng thái thoát số, trong khi die () in thông báo lỗi sang stderr và thoát với trạng thái EXIT_FAILURE. " Nhưng sau đó tôi nhớ chúng ta đang ở trong vùng đất cú pháp lộn xộn của PHP.
Trong PHP, exit () và die () giống hệt nhau.
Các nhà thiết kế rõ ràng đã nghĩ "Hmm, chúng ta hãy mượn exit () từ C. Và mọi người Perl có thể sẽ thích nó nếu chúng ta chết () cũng như từ Perl . Rất tiếc! Chúng ta có hai chức năng thoát ngay bây giờ! có thể lấy một chuỗi hoặc số nguyên làm đối số và làm cho chúng giống hệt nhau! "
Kết quả cuối cùng là điều này không thực sự khiến mọi thứ trở nên "dễ dàng" hơn, chỉ gây nhầm lẫn hơn. Các lập trình viên C và Perl sẽ tiếp tục sử dụng exit () để chỉ ném một giá trị thoát số nguyên và die () để ném thông báo lỗi và thoát với lỗi. Người mới và những người sử dụng ngôn ngữ PHP đầu tiên có thể sẽ tự hỏi "umm, hai chức năng thoát, tôi nên sử dụng chức năng nào?" Hướng dẫn không giải thích tại sao có exit () và die ().
Nói chung, PHP có rất nhiều sự dư thừa kỳ lạ như thế này - nó cố gắng thân thiện với những người đến từ các nền tảng ngôn ngữ khác nhau, nhưng trong khi làm như vậy, nó tạo ra sự dư thừa khó hiểu.
exit()
không đóng kết nối trong khi die()
có vẻ như có liên quan.
Như đã nêu trước đây, hai lệnh này tạo ra mã thông báo trình phân tích cú pháp giống nhau.
NHƯNG
Có một sự khác biệt nhỏ và đó là mất bao lâu để trình phân tích cú pháp trả lại mã thông báo.
Tôi đã không nghiên cứu trình phân tích cú pháp PHP, nhưng nếu đó là một danh sách dài các hàm bắt đầu bằng "d" và một danh sách ngắn hơn bắt đầu bằng "e", thì phải có một hình phạt thời gian tìm kiếm tên hàm cho các hàm bắt đầu bằng " e ". Và có thể có sự khác biệt khác do cách kiểm tra toàn bộ tên hàm.
Tôi nghi ngờ nó sẽ có thể đo lường được trừ khi bạn có một môi trường "hoàn hảo" dành riêng cho việc phân tích cú pháp PHP và rất nhiều yêu cầu với các tham số khác nhau. Nhưng phải có một sự khác biệt, xét cho cùng, PHP là một ngôn ngữ được diễn giải.
Hướng dẫn sử dụng PHP trên die :
chết - tương đương để thoát
Bạn thậm chí có thể làm die;
theo cách tương tự exit;
- có hoặc không có parens.
Ưu điểm duy nhất của việc chọn die()
qua exit()
, có thể là thời gian bạn rảnh rỗi khi gõ thêm một chữ cái ;-)
php -a
) die;
, die();
, exit;
và exit();
không có hiệu lực, trong khi exit
(không có dấu chấm phẩy) thoát chế độ tương tác.
Như tất cả các câu trả lời đúng khác nói, die
và exit
giống hệt nhau / bí danh.
Mặc dù tôi có một quy ước cá nhân rằng khi tôi muốn kết thúc việc thực thi một kịch bản khi nó được mong đợi và mong muốn, tôi sử dụng exit;
. Và khi tôi cần kết thúc thực thi do một số vấn đề (không thể kết nối với db, không thể ghi vào tệp, v.v.), tôi sử dụng die("Something went wrong.");
để "giết" tập lệnh.
Khi tôi sử dụng lối ra:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
Khi tôi sử dụng chết:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
Bằng cách này, khi tôi thấy exit
tại một số điểm trong mã của mình, tôi biết rằng tại thời điểm này tôi muốn thoát vì logic kết thúc ở đây. Khi tôi thấy die
, tôi biết rằng tôi muốn tiếp tục thực hiện, nhưng tôi không thể hoặc không nên do lỗi trong lần thực hiện trước.
Tất nhiên điều này chỉ hoạt động khi làm việc trên một dự án một mình. Khi có nhiều người hơn, sẽ không có ai ngăn họ sử dụng die
hoặc exit
nơi không phù hợp với quy ước của tôi ...
Đây là một cái gì đó khá thú vị. Mặc dù exit()
và die()
là tương đương, die()
đóng kết nối. exit()
không đóng kết nối.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Các kết quả:
exit()
:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
die()
:
HTTP/1.1 304 Not Modified
Connection: close
Chỉ cần đưa vào tài khoản cho dự án của bạn.
exit
và die
làm việc theo cách tương tự, cả hai đều kết nối chặt chẽ.
Về mặt chức năng, chúng giống hệt nhau nhưng tôi sử dụng chúng trong các tình huống sau để làm cho mã có thể đọc được:
Sử dụng die () khi có lỗi và phải dừng thực thi.
ví dụ
die( 'Oops! Something went wrong' );
Sử dụng exit () khi không có lỗi và phải dừng thực thi.
ví dụ
exit( 'Request has been processed successfully!' );
Trang này nói die
là đồng minh của nhau exit
, vì vậy chúng giống hệt nhau. Nhưng cũng giải thích rằng:
có những chức năng thay đổi tên vì dọn dẹp API hoặc một số lý do khác và tên cũ chỉ được giữ làm bí danh cho khả năng tương thích ngược. Việc sử dụng các loại bí danh này thường là một ý tưởng tồi, vì chúng có thể bị ràng buộc với lỗi thời hoặc đổi tên, điều này sẽ dẫn đến kịch bản không thể truy cập được.
Vì vậy, hãy gọi tôi là hoang tưởng, nhưng có thể không có die
ing trong tương lai.
is_int()
và is_integer()
chẳng hạn đều tốt như nhau. Nhìn vào php-src
lịch sử cam kết trên GitHub, die()
cấu trúc đã có trong PHP ít nhất là từ năm 1999 khi nó được chuyển đổi thành kho lưu trữ SVN và có lẽ chừng nào ngôn ngữ này còn tồn tại. Có vẻ ngớ ngẩn khi tưởng tượng rằng nó sẽ không bao giờ bị phản đối.
exit
trong tương lai. Hoặc có thể không có die
trong tương lai"
Kết quả đầu ra từ https://3v4l.org này chứng minh rằng die và exit giống nhau về mặt chức năng.
Chúng cơ bản giống nhau, mặc dù bài viết này đề xuất khác.
Về mặt chức năng, chúng giống hệt nhau. Vì vậy, để chọn cái nào để sử dụng hoàn toàn là một sở thích cá nhân. Về mặt ngữ nghĩa trong tiếng Anh, chúng khác nhau. Chết âm thanh. Khi tôi có một hàm trả về dữ liệu JSON cho máy khách và chấm dứt chương trình, thật tệ nếu tôi gọi hàm này là jsonDie () và thích hợp hơn để gọi nó là jsonExit (). Vì lý do đó, tôi luôn sử dụng lối ra thay vì chết.
Từ những gì tôi biết khi tôi nhìn vào câu hỏi này ở đây
Nó nói rằng "trong PHP, có một sự khác biệt rõ ràng trong đầu ra Tiêu đề. Trong các ví dụ bên dưới, tôi đã chọn sử dụng một tiêu đề khác nhưng để hiển thị sự khác biệt giữa exit () và die () không quan trọng", và thử nghiệm (cá nhân)
Trong w3schools Quiz: Các hàm die () và exit () có làm chính xác điều tương tự không? Câu trả lời của tôi là sai. Đó là câu trả lời không chính xác. Câu trả lời đúng là đúng.
Một cái gì đó tôi đã nhận thấy trong các tập lệnh của mình ít nhất là exit () sẽ dừng tập lệnh hiện đang thực thi và chuyển điều khiển trở lại bất kỳ tập lệnh gọi nào, trong khi die sẽ dừng php trong các bài hát của nó. Tôi sẽ nói rằng đó là một sự khác biệt khá lớn?
Kết quả của hàm exit () và hàm die () đều giống nhau. Nhưng như được giải thích trong trang hướng dẫn bí danh ( http://php.net/manual/en/aliases.php ), nó nói rằng hàm die () gọi hàm thoát. Tôi nghĩ rằng nó được mã hóa cứng như dưới đây:
function die($msg){
exit($msg);
}
Đây không phải là vấn đề hiệu suất cho các dự án nhỏ, vừa và lớn nhưng nếu dự án có hàng tỷ tỷ tỷ tỷ tỷ nhân, thì điều này xảy ra rất quan trọng trong trạng thái tối ưu hóa hiệu suất.
Nhưng hầu hết mọi người không nghĩ rằng đây là một vấn đề, bởi vì nếu bạn có quá trình đó, bạn phải nghĩ nhiều vấn đề hơn là nếu một chức năng là chủ hoặc bí danh.
Nhưng, câu trả lời chính xác là vậy; allways chức năng tổng thể là nhanh hơn bí danh.
Cuối cùng; Trang hướng dẫn bí danh nói rằng, bạn có thể không còn sử dụng die. Nó chỉ là một bí danh, và nó không được dùng nữa.
Việc sử dụng các loại bí danh này thường là một ý tưởng tồi, vì chúng có thể bị ràng buộc với lỗi thời hoặc đổi tên, điều này sẽ dẫn đến kịch bản không thể truy cập được. Danh sách này được cung cấp để giúp những người muốn nâng cấp tập lệnh cũ của họ thành cú pháp mới hơn.
die()
không phải là một chức năng riêng biệt. Nó chỉ là một tên khác của exit()
. Câu trả lời này chứa các tuyên bố không chính xác về bí danh và hiệu suất của chúng.
Chúng có âm thanh giống nhau, tuy nhiên, exit () cũng cho phép bạn đặt mã thoát của tập lệnh PHP.
Thông thường bạn không thực sự cần điều này, nhưng khi viết các kịch bản PHP của bàn điều khiển, bạn có thể muốn kiểm tra ví dụ Bash nếu tập lệnh hoàn thành mọi thứ theo đúng cách.
Sau đó, bạn có thể sử dụng exit () và bắt nó sau. Die () tuy nhiên không hỗ trợ điều đó.
Die () luôn tồn tại với mã 0. Vì vậy, về cơ bản, lệnh die () thực hiện như sau:
<?php
echo "I am going to die";
exit(0);
?>
Điều này giống như:
<?php
die("I am going to die");
?>
die
và exit
giống hệt nhau (chúng tạo ra cùng một mã thông báo trình phân tích cú pháp ( T_EXIT
) và được thực thi bởi cùng một mã). Nếu tham số là một số nguyên, nó sẽ trả lại mã đó cho shell. Nếu không, nó sẽ xuất ra và trả về 0. Vì vậy, die
và exit
theo nghĩa đen là bí danh cho nhau.
so exit() is exit and die() is also exit :)