[Wiki] Hàm DIE, EXIT trong PHP

DIE & EXIT

  • Định nghĩa: cả hai hàm này đều dùng để dừng hệ thống lại không dịch nội dung PHP nữa và sẽ trả về thông báo.
  • Cú pháp:
void exit ([ string $status ] )
void die ([ string $status ] )
  • Tham số: $status nội dung lời nhắn trả về.
  • Giá trị trả về: chuỗi $status.
  • Ví dụ:
<?php
echo 'Xin chào các bạn';
die('chương trình bị dừng ở đây');
echo 'dòng này sẽ không được hiện';
?>
<?php
echo 'Xin chào các bạn';
exit('chương trình bị dừng ở đây bởi hàm exit');
echo 'dòng này sẽ không được hiện';
?>
2 Likes

Vẫn có nhiều sự tranh cãi về sự khác nhau giữa hàm die và hàm exit. Nhưng trên tài liệu của PHP thì lại nói 2 thằng này tương đương. Ai hiểu rõ ngọn nguồn của vấn đề này, giải đáp giùm em :blush:

1 Like

Trên thực tế hai hàm này chả có gì khác nhau cả, nó có cùng ý nghĩa, lý do có 2 hàm này đơn giản vì một số người ko thích sử dụng từ die (chết) vào code :stuck_out_tongue:

3 Likes

đọc tài liệu PHP gốc đầu tiên đã

http://php.net/manual/en/function.die.php

This language construct is equivalent to exit().
3 Likes

Nhưng mà bên kia cũng nói vậy

http://php.net/manual/en/function.exit.php

This language construct is equivalent to die().
4 Likes

Bởi vậy hai cái là như nhau tùy người sử dụng thôi :smiley:

1 Like

Theo minh thì hàm die sẽ dừng tất cả quá trình thực thi của php và xuất ra message là tham số đầu tiên. Còn hàm exit thì chỉ thoát ra khỏi vị trí nó đang chạy. VD như trong function chẳng hạn.

Còn theo tác giả https://github.com/nkt này thì nói nó là chỉ là bí danh thôi

2 Likes

Nói không với die() nhìn vào code dị ứng lắm :wink:

2 Likes

Không đúng, hai hàm này thực hiện giống hệt nhau.

  • Nếu tham số là giá trị số thì sẽ gửi tín hiệu ra system và dừng.
  • Nếu là chuỗi thì sẽ in ra chuỗi và dừng.

Thử hai ví dụ đều ra kết quả như nhau.

<?php
// test1.php
$author = "@laptrinhio";
echo $author . "\n";

exit("* exit() is called.");
die("* die() is called.");

echo "bye bye $author \n";


<?php
test2.php
$author = "@laptrinhio";
echo $author . "\n";

die("* die() is called.");
exit("* exit() is called.");

echo "bye bye $author \n";

Thực hiện đúng như trong PHP doc mô tả: http://php.net/manual/en/function.exit.php

exit — Output a message and terminate the current script

Chốt là hai hàm này giống nhau :wink: … không cần lo nghĩ nhiều, thích sao thì dùng thôi.

Tớ thi thoảng còn alias cho nó bổ mắt.

function shit($bitch = "who built this s***") {
    die( $bitch );
}
4 Likes

Đúng là 2 thằng die và exit là giống nhau (cùng chức năng, và chính thằng manual PHP cũng nói như vậy “This language construct is equivalent”).

Haha nhưng thật ra 2 thằng này khác nhau nhé, khác nhau bởi xuất thân.

exit là một hàm trong C/C++ dùng để thoát chương trình.
và nên nhớ rằng PHP được viết trên C/C++ và die là một hàm trong PHP được viết và sử dụng thằng exit để dừng biên dịch (thoát chương trình).
cho nên 2 thằng đều dừng và thoát chương trình (không biên dịch tiếp PHP bên dưới).

ngôn ngữ PHP (toàn bộ các hàm, câu lệnh) rất chi là hỗn tạp và lộn xộn, đây là điều mình không thích ở PHP nó giống một thứ gì đó mà mình không muốn nói ra :)))) vì nó vừa có thể thực thi cũng cú pháp của C, vừa có thể thực thi cú pháp riêng của PHP, cấu trúc thì vừa hướng thủ tục, vừa lại hướng đối tượng :)) lung tung xì ngầu lên hết. Nếu bạn code thì nên thống nhất một kiểu cho dự án, toàn bộ code là PHP không xen cú pháp C vào, hướng đối tượng thì hướng đối tượng hết, hướng thủ tục thì hướng thủ tục hết. đừng lọt xọt cái này cái kia.
tóm lại cái exit và die chỉ mang tính “readable”. ví dụ toàn bộ code của bạn đang là PHP rồi, tự nhiên xọt vào thằng exit của C thì ờ hơi lạc loài rồi :))

4 Likes

Dần dần nếu các version cao thì có thể bỏ một trong 2.
Mình bê một số dự án PHP cũ (code cũng lôm côm lắm) vào PHP 7 thì crash loạn lên, fix theo cú pháp mới thì chạy được. Kiểu như ngày xưa thì có contructor kiểu C# Java… mấy bố code Java nhảy sang PHP thì code kiểu Java, sang bản mới bắt buộc dùng __construct. Bản cũ thì dùng split(), bản mới phải sửa thành explode()

Chả hiểu sao bỏ split() mà không bỏ join(), tận PHP 7 rồi mà nó vẫn lộn xộn thế nào ấy.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?