อะไรคือความแตกต่างของ die () และ exit () ใน PHP?


679

อะไรคือความแตกต่างระหว่างdie()และexit()ฟังก์ชั่นใน PHP?

ฉันคิดว่าทั้งคู่มีฟังก์ชั่นเหมือนกัน แต่ฉันสงสัยว่ามีบางอย่างที่แตกต่างกันในทั้งสอง ... มันคืออะไร?


2
exit () เพียงแค่ปิดโปรแกรมที่มีสถานะทางออกเป็นตัวเลขขณะที่ die () พิมพ์ข้อความแสดงข้อผิดพลาดไปที่ stderr และออกจากสถานะ EXIT_FAILURE so exit() is exit and die() is also exit :)
มูฮัมหมัดชาห์ซาด

คำตอบ:


541

ไม่มีความแตกต่าง - พวกเขาเหมือนกัน

คู่มือ PHP สำหรับexit:

หมายเหตุ: die()ภาษาสร้างนี้จะเทียบเท่ากับ

คู่มือ PHP สำหรับdie:

exit()ภาษาสร้างนี้จะเทียบเท่ากับ


17
นามแฝงอนุญาตให้โปรแกรมเมอร์ใช้อันที่สะดวกสบายด้วย ฉันจำได้ว่าทางออกดีกว่าตาย บางคนจำได้ว่าตายดีกว่าทางออก
เมาริส

28
นี้ ( php.net/manual/en/aliases.php ) อาจให้คำอธิบายว่าทำไมบางฟังก์ชั่น 2 ทำสิ่งเดียวกัน
มาเรคคาร์บาร์ซ

87
แม้ว่าพวกเขาจะทำสิ่งเดียวกันฉันมักจะสำรองdieสำหรับการหยุดที่เกี่ยวข้องกับข้อผิดพลาดและexitสถานการณ์อื่น ๆ ทั้งหมด ดูเหมือนว่าจะไหลได้ดีขึ้นเมื่ออ่านโค้ด
nextgentech

7
ขออภัยที่จะรื้อฟื้นสิ่งนี้ แต่อย่างน้อยสำหรับฉัน ... dieมันเขียนได้เร็วกว่าexit... ฉันเริ่มใช้exitเพราะมันอ่านได้ง่ายกว่าสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ PHP แต่dieมันเร็วกว่าที่จะพิมพ์เมื่อคุณอยู่ใน รีบร้อน. dieนอกจากนี้โดยแบ่งตามชนิดวิธีที่ฉันที่ฉันไม่ได้มีการเปลี่ยนตำแหน่งมือของฉันที่จะเขียน
Alejandro Iván

7
@mauris มันเป็นวิธีที่ดีกว่าสำหรับคนที่ฟังก์ชั่นที่จะมีเพียงหนึ่งชื่อ ลองนึกภาพฟังก์ชัน PHP ทุกคนมีสองชื่อที่จะเป็นระเบียบสมบูรณ์
Pacerier

222

ความแตกต่างในถิ่นกำเนิด

ความแตกต่างระหว่างdie()และexit()ใน PHP เป็นของพวกเขากำเนิด


ฟังก์ชันที่เท่าเทียมกัน

die()และexit()เป็นฟังก์ชั่นที่เทียบเท่า

คู่มือ PHP

คู่มือ PHP สำหรับdie:

exit()ภาษาสร้างนี้จะเทียบเท่ากับ

คู่มือ PHP สำหรับexit:

หมายเหตุ: die()ภาษาสร้างนี้จะเทียบเท่ากับ

คู่มือ PHP สำหรับรายชื่อฟังก์ชันนามแฝง :

die เป็นนามแฝงสำหรับฟังก์ชั่นหลัก exit()


ความแตกต่างในภาษาอื่น ๆ

die()และexit()มีความแตกต่างกันในภาษาอื่น ๆแต่ใน PHP พวกเขาเหมือนกัน

จากการคุยโว PHP อื่น :

... ในฐานะ C และ Perl coder ฉันพร้อมที่จะตอบว่า "ทำไม exit () เพียงแค่ปิดโปรแกรมที่มีสถานะทางออกเป็นตัวเลขขณะที่ die () พิมพ์ข้อความแสดงข้อผิดพลาดไปยัง stderr และออกด้วยสถานะ EXIT_FAILURE " แต่จากนั้นฉันจำได้ว่าเราอยู่ในระเบียบยุ่งเหยิงของ PHP

ใน PHP exit () และ die () เหมือนกัน

เห็นได้ชัดว่านักออกแบบคิดว่า "อืมมายืมexit () จาก Cและคน Perl ก็คงจะชอบถ้าเราตาย () เหมือนมาจาก Perlด้วยอ๊ะเรามีฟังก์ชั่นทางออกทั้งสองเอาไว้ให้พวกเขาทั้งคู่ สามารถใช้สตริงหรือเลขจำนวนเต็มเป็นอาร์กิวเมนต์และทำให้เหมือนกัน! "

ผลลัพธ์ที่ได้คือสิ่งนี้ไม่ได้ทำให้สิ่งใด ๆ "ง่ายขึ้น" ยิ่งสับสนยิ่งขึ้น ตัวแปลงสัญญาณ C และ Perl จะยังคงใช้ exit () เพื่อโยนค่าออกจำนวนเต็มเท่านั้นและตาย () เพื่อโยนข้อความแสดงข้อผิดพลาดและออกด้วยความล้มเหลว มือใหม่และ PHP-as-a-first-language อาจจะสงสัยว่า "อืมมสองฟังก์ชั่นทางออกซึ่งฉันควรใช้อันไหน?" คู่มือไม่ได้อธิบายว่าทำไมมี exit () และ die ()

โดยทั่วไป PHP มีความซ้ำซ้อนจำนวนมากเช่นนี้ - พยายามเป็นมิตรกับผู้ที่มาจากภูมิหลังทางภาษาที่แตกต่างกัน แต่ในขณะที่ทำเช่นนั้นจะสร้างความซ้ำซ้อนที่สับสน


14
แม้ว่านี่จะเป็นคำตอบที่ครบรอบ 100 ที่ระบุว่าพวกเขาเท่าเทียมกัน (ดังที่เห็นในคำตอบของฉัน ^^) นี่เป็นการเพิ่มคะแนนที่ดีมาก ๆ สิ่งสำคัญที่สุดคือพวกเขาไม่เหมือนกันในภาษาอื่น (ทำให้เกิดความสับสนตั้งแต่แรก) (+1)
Levite

@Levit, no, no, คุณได้รับมันผิดทั้งหมด ไม่มีใครเป็นเจ้าของชื่อและภาษาที่แตกต่างกันใช้ชื่อเดียวกันในวิธีที่ไม่มีคุณภาพ ไม่เป็นไรเพราะเรายังไม่ต้องการวิธีทำมาตรฐานอีกวิธี "ความสับสนในสถานที่แรก" เกิดจากการกำหนด PHP สองชื่อที่แตกต่างกันให้เป็นหนึ่งในฟังก์ชั่น ..
Pacerier

2
@Pierier: แน่นอนถ้าคุณดูจากจุด "ใครเป็นคนผิด" นั่นมันถูกต้องจริงๆ ยังเป็นความจริงที่ว่าพวกเขาหมายถึงสิ่งที่แตกต่างในหลายภาษา (ซึ่งก็โอเค) มองจากมุมมองที่เป็นกลางมันถือเป็นจริง: มีความสับสนเพราะความหมายที่แตกต่างกัน (แม้ว่าจะเป็นความผิดของ php ในการสร้างสมนามฟังก์ชันที่เท่ากันสองตัว) แน่นอนว่าฉันไม่ต้องการชี้นิ้วไปที่ภาษาเหล่านั้นถ้านั่นคือสิ่งที่คุณเข้าใจจากความคิดเห็นของฉัน ... (xkcd btw ที่ยอดเยี่ยม (Y) ^^)
Levite

2
นี่ควรเป็นคำตอบที่เลือกคำอธิบายที่ดีอย่างแน่นอน!
โคดี้บราวน์

ผู้ใช้รายอื่นตอบว่าexit()ไม่ปิดการเชื่อมต่อในขณะdie()นั้นดูเหมือนว่าจะเกี่ยวข้อง
ner0

62

ตามที่ระบุไว้ก่อนหน้านี้ทั้งสองคำสั่งสร้างโทเค็นการแยกวิเคราะห์เดียวกัน

แต่

มีความแตกต่างเล็กน้อยและนั่นคือระยะเวลาที่โปรแกรมแยกวิเคราะห์ใช้เวลาส่งคืนโทเค็น

ฉันยังไม่ได้ศึกษาตัวแยกวิเคราะห์ PHP แต่ถ้าเป็นรายการที่มีความยาวของฟังก์ชั่นที่เริ่มต้นด้วย "d" และรายการสั้น ๆ ที่ขึ้นต้นด้วย "e" จะต้องมีการปรับเวลาเพื่อค้นหาชื่อฟังก์ชั่นที่ขึ้นต้นด้วย " E" และอาจมีความแตกต่างอื่น ๆ เนื่องจากการตรวจสอบชื่อฟังก์ชันทั้งหมด

ฉันสงสัยว่ามันจะวัดได้เว้นแต่คุณจะมีสภาพแวดล้อม "สมบูรณ์แบบ" โดยเฉพาะสำหรับการแยกวิเคราะห์ PHP และคำขอจำนวนมากที่มีพารามิเตอร์ที่แตกต่างกัน แต่จะต้องมีความแตกต่างหลังจากทั้งหมด PHP เป็นภาษาตีความ


4
@ ไร้กาลเวลาผู้ยึดความสมบูรณ์แบบจะไม่พูดว่า "PHP เป็นภาษาที่ตีความ" PHP เป็นภาษาที่สามารถตีความหรือเรียบเรียงโดยขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์ของคุณ
Pacerier

29
และ ... "ตาย" มีความยาว 3 ตัวอักษรกับ 4 สำหรับ "ทางออก" ดังนั้นจะใช้หน่วยความจำและพื้นที่ไฟล์น้อยลง 25%! ;)
Jan Derk

2
'' ถ้าเป็นรายการที่มีความยาวของฟังก์ชั่นที่ขึ้นต้นด้วย "d" และรายการที่สั้นกว่าที่ขึ้นต้นด้วย "e" จะต้องมีการปรับเวลาเพื่อค้นหาชื่อฟังก์ชั่นสำหรับฟังก์ชั่นที่ขึ้นต้นด้วย "e" ' หมายความว่าการปรับเวลาจะเกิดขึ้นเมื่อค้นหาฟังก์ชั่นที่เริ่มต้นด้วยdโดยปกติยิ่งรายการยิ่งนานเท่าไหร่ก็ยิ่งหาเวลาได้มากขึ้นเท่านั้น
Pere

9
อย่างที่คุณเขียนคุณยังไม่ได้ศึกษา PHP parser ขอบคุณสำหรับคำตอบที่ไร้ประโยชน์เพราะมันขึ้นอยู่กับความฝันของคุณในการใช้งาน PHP
dolmen

44

คู่มือ PHP เกี่ยวกับการตาย :

ตาย - เท่ากับทางออก

คุณสามารถทำdie;แบบเดียวexit;กับที่มีหรือไม่มีล้อเลียนก็ได้

ประโยชน์เฉพาะของการเลือกdie()มากกว่าexit()อาจจะมีเวลาที่คุณว่างในการพิมพ์ตัวอักษรพิเศษ ;-)


1
มันยังอำนวยความสะดวกเมื่อมีคนมาจากภาษาอื่นพวกเขาจะคุ้นเคยกัน
บ้างไหม

โปรดทราบว่าถ้าใช้ PHP โต้ตอบ ( php -a) die;, die();, exit;และexit();ไม่มีผลในขณะที่exit(ไม่อัฒภาค) ออกจากโหมดการโต้ตอบ
santiago arizti

31

ตามที่ทุกคำตอบที่ถูกต้องอื่น ๆ พูดdieและexitเหมือนกัน / นามแฝง

exit;แม้ว่าผมจะมีการประชุมส่วนบุคคลที่เมื่อฉันต้องการที่จะยุติการดำเนินการของสคริปต์เมื่อมีการคาดหวังและต้องการที่ผมใช้ และเมื่อฉันต้องการที่จะยุติการดำเนินการเนื่องจากปัญหาบางอย่าง (ไม่สามารถเชื่อมต่อกับ db, ไม่สามารถเขียนไปยังไฟล์ ฯลฯ ) ฉันใช้die("Something went wrong.");เพื่อ "ฆ่า" สคริปต์

เมื่อฉันใช้ทางออก:

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.

เมื่อฉันใช้ตาย:

$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 );

ด้วยวิธีนี้เมื่อฉันเห็นexitจุดในรหัสของฉันฉันรู้ว่า ณ จุดนี้ฉันต้องการออกเพราะตรรกะสิ้นสุดที่นี่ เมื่อฉันเห็นdieฉันรู้ว่าฉันต้องการดำเนินการต่อ แต่ฉันไม่สามารถหรือไม่ควรเนื่องจากข้อผิดพลาดในการดำเนินการก่อนหน้านี้

แน่นอนว่าจะใช้ได้เฉพาะเมื่อทำงานกับโครงการเพียงอย่างเดียว เมื่อมีผู้คนจำนวนมากจะไม่มีใครป้องกันไม่ให้พวกเขาใช้งานdieหรือในexitกรณีที่ไม่เหมาะกับการประชุมของฉัน ...


30

นี่คือสิ่งที่น่าสนใจทีเดียว แม้ว่าexit()และdie()จะเทียบเท่าdie() ปิดการเชื่อมต่อ exit() ไม่ได้ปิดการเชื่อมต่อ

die():

<?php
    header('HTTP/1.1 304 Not Modified');
    die();
?>

exit():

<?php
    header('HTTP/1.1 304 Not Modified');
    exit();
?>

ผล:

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

เพียงไม่จำเป็นต้องคำนึงถึงเรื่องนี้สำหรับโครงการของคุณ

เครดิต: https://stackoverflow.com/a/20932511/4357238


1
นี่ควรเป็นคำตอบที่ยอมรับได้
ner0

2
เพิ่งทดสอบexitและdieทำงานในลักษณะเดียวกันพวกเขาทั้งสองเชื่อมต่ออย่างใกล้ชิด
Grzegorz Adam Kowalski

12

ฟังก์ชั่น - ฉลาดพวกมันเหมือนกัน แต่ฉันใช้พวกมันในสถานการณ์ต่อไปนี้เพื่อให้โค้ดอ่านได้:

ใช้ die () เมื่อมีข้อผิดพลาดและต้องหยุดการทำงาน

เช่น die( 'Oops! Something went wrong' );

ใช้ exit () เมื่อไม่มีข้อผิดพลาดและต้องหยุดการทำงาน

เช่น exit( 'Request has been processed successfully!' );


11

หน้านี้กล่าวว่าdieเป็นนามแฝงของexitดังนั้นพวกเขาจึงเหมือนกัน แต่ยังอธิบายว่า:

มีฟังก์ชั่นที่เปลี่ยนชื่อเนื่องจากการล้าง API หรือเหตุผลอื่น ๆ และชื่อเก่าจะถูกเก็บไว้เป็นนามแฝงเพื่อความเข้ากันได้ย้อนหลังเท่านั้น มันเป็นความคิดที่ดีที่จะใช้นามแฝงประเภทนี้เนื่องจากอาจจะล้าสมัยหรือเปลี่ยนชื่อซึ่งจะนำไปสู่สคริปต์ที่ไม่สามารถแปลได้

ดังนั้นโทรหาฉันหวาดระแวง แต่อาจไม่มีdieอนาคต


3
นอกจากนี้ยังกล่าวว่าในบางกรณีไม่มีชื่อที่ต้องการในหลาย ๆ ชื่อis_int()และis_integer()ดีพอ ๆ กันเช่น ดูที่php-srcประวัติความเป็นมาของ GitHub สิ่งdie()ก่อสร้างนั้นอยู่ใน PHP อย่างน้อยตั้งแต่ปี 1999 เมื่อมันถูกแปลงเป็นพื้นที่เก็บข้อมูล SVN และอาจนานเท่าที่ภาษานั้นมีอยู่ ดูเหมือนว่าไร้สาระที่จะจินตนาการว่าจะเลิกใช้แล้ว
Mark Amery

2
@ Markymery ในขณะที่สถานที่ของเขาไม่ได้นำไปสู่ข้อสรุปของเขาข้อสรุปที่ถูกต้อง: ~ "โทรหาฉันหวาดระแวง แต่อาจจะไม่มีexitในอนาคตหรืออาจจะไม่มีdieในอนาคต"
Pacerier

@Pacerier ค่อนข้างถูกต้อง ในอนาคตอาจจะไม่มี PHP ดังนั้นเราจะออกจากการเขียนโปรแกรมนี้และกลายเป็นผู้ประกอบการหรือผู้สะสมภาษี ไม่มีอะไรแน่นอนนอกจากความตายและภาษีหลังจากทั้งหมด
Mark Amery

@ MarkAmery ดูเหมือนว่า"ไม่มี PHP ในอนาคต"ดูเหมือนจะเกินความหวาดระแวงที่สูงกว่าค่าเฉลี่ย ประวัติศาสตร์ได้แสดงให้เห็นว่าภาษายอดนิยมอย่างบ้าคลั่งไม่ได้ล้มตายลงอย่างง่ายดาย (Fortran!)
Pacerier

1
อย่าหวาดระแวง ทางออกจะไม่ตาย :)
dolmen


6

พวกเขาเป็นหลักเหมือนกันถึงแม้ว่าบทความนี้จะแนะนำเป็นอย่างอื่น


1
บทความนั้นแปลกดี จากคำจำกัดความของเครื่องสแกนคุณสามารถบอกได้ว่ามันเทียบเท่ากัน หากมีความแตกต่างใด ๆ อาจทดสอบได้โดยไม่ต้อง opcache
Ja͢ck

บทความเกี่ยวกับเกณฑ์มาตรฐานที่ไม่สามารถทำซ้ำได้เนื่องจากไม่ได้เผยแพร่โค้ด เพียงแค่เพิกเฉย
dolmen

0

หน้าที่พวกเขาเหมือนกัน ดังนั้นการเลือกใช้อันไหนเป็นความชอบส่วนตัวโดยสิ้นเชิง ความหมายเป็นภาษาอังกฤษพวกมันต่างกัน เสียงฟังดูเป็นลบ เมื่อฉันมีฟังก์ชั่นที่ส่งคืนข้อมูล JSON ไปยังไคลเอนต์และยุติโปรแกรมมันน่ากลัวถ้าฉันเรียกฟังก์ชั่นนี้ว่า jsonDie () และมันเหมาะสมกว่าที่จะเรียกมันว่า jsonExit () ด้วยเหตุนี้ฉันจึงมักจะใช้ทางออกแทนความตาย


OP กำลังถามเกี่ยวกับฟังก์ชั่นการออกและตายของ PHP เท่านั้น
Black Mamba

1
ใช่และฉันตอบคำถามนั้นเท่านั้น อย่างไรก็ตามเพื่อให้ตระหนักถึงคำถามนี้ไม่ได้เกี่ยวกับความแตกต่างในการทำงานเท่านั้น
Luo Jiong Hui

หนึ่งในฟังก์ชั่นที่น่ารักที่สุดของฉันเรียกว่า pd () - ซึ่งแปลว่า Please Die ดังนั้นผมไม่แน่ใจว่าตายเป็นสิ่งที่ไม่ดีในบริบทเช่น :)
อีวาน Ponomarev

ในฐานะนักพัฒนาสแต็คเต็มรูปแบบฉันไม่เพียง แต่มองว่าตัวเองเป็นโปรแกรมเมอร์ แต่ยังเป็นผู้ออกแบบประสบการณ์ผู้ใช้ และในบริบทนี้ความเห็นอกเห็นใจเป็นสิ่งสำคัญ ความเห็นอกเห็นใจไม่เพียงส่งผลกระทบต่อวิธีการออกแบบ UI ของฉันเท่านั้น
Luo Jiong Hui

0

จากสิ่งที่ฉันรู้เมื่อฉันดูคำถามนี้ที่นี่

มันบอกว่ามี "ใน PHP มีความแตกต่างที่ชัดเจนในส่วนหัวของผลลัพธ์ในตัวอย่างด้านล่างฉันเลือกที่จะใช้ส่วนหัวที่แตกต่างกัน แต่เพื่อแสดงความแตกต่างระหว่าง exit () และ die () ที่ไม่สำคัญ" และผ่านการทดสอบ (เป็นการส่วนตัว)


-3

ใน w3schools Quiz: ฟังก์ชั่น die () และ exit () ทำสิ่งเดียวกันหรือไม่ คำตอบของฉันเป็นเท็จ นั่นคือคำตอบที่ไม่ถูกต้อง คำตอบที่ถูกต้องเป็นจริง

นี่คือภาพหน้าจอ: ป้อนคำอธิบายรูปภาพที่นี่


-5

สิ่งที่ฉันสังเกตเห็นในสคริปต์ของฉันอย่างน้อยก็คือ exit () จะหยุดสคริปต์ที่ดำเนินการอยู่ในปัจจุบันและส่งการควบคุมกลับไปที่สคริปต์การโทรใด ๆ ในขณะที่ die จะหยุด php ในแทร็กของมัน ฉันจะบอกว่าค่อนข้างแตกต่างกันมาก?


1
@AdarshMadrecha นี่ไม่เป็นความจริง หากอยู่ภายในหรือภายนอกฟังก์ชั่นย่อยสคริปต์ php จะหยุดทำงาน
MERT DOĞAN

-5

ผลลัพธ์ของฟังก์ชัน exit () และฟังก์ชัน die () เหมือนกันทุกประการ แต่ดังที่อธิบายไว้ในหน้าคู่มือนามแฝง ( http://php.net/manual/en/aliases.php ) มันบอกว่าฟังก์ชั่น die () เรียกใช้ฟังก์ชัน exit ฉันคิดว่ามันยากรหัสเช่นด้านล่าง:

function die($msg){
  exit($msg);
}

นี่ไม่ใช่ปัญหาด้านประสิทธิภาพสำหรับโครงการขนาดเล็กขนาดกลางและขนาดใหญ่ แต่ถ้าโครงการมีหลายพันล้านกระบวนการคูณหลายพันล้านกระบวนการนี้เกิดขึ้นเป็นสิ่งสำคัญที่สุดในการปรับปรุงประสิทธิภาพของรัฐ

แต่คนส่วนใหญ่ไม่คิดว่านี่เป็นปัญหาเพราะถ้าคุณมีกระบวนการมากมายคุณต้องคิดปัญหามากกว่าถ้าฟังก์ชั่นเป็นผู้เชี่ยวชาญหรือนามแฝง

แต่คำตอบที่แน่นอนคือ; ฟังก์ชั่นหลัก allways เร็วกว่านามแฝง

สุดท้าย; หน้าคู่มือนามแฝงบอกว่าคุณไม่สามารถใช้ die ได้อีกต่อไป เป็นเพียงนามแฝงและเลิกใช้แล้ว

มันเป็นความคิดที่ดีที่จะใช้นามแฝงประเภทนี้เนื่องจากอาจจะล้าสมัยหรือเปลี่ยนชื่อซึ่งจะนำไปสู่สคริปต์ที่ไม่สามารถแปลได้ รายการนี้จัดทำขึ้นเพื่อช่วยผู้ที่ต้องการอัพเกรดสคริปต์เก่าเป็นไวยากรณ์ใหม่


2
การใช้นามแฝงไม่ใช่ 'การเรียกใช้ฟังก์ชัน' ตรวจสอบสมมติฐานของคุณก่อนที่จะทำการตั้งสมมติฐานอย่างละเอียด
dolmen

@dolmen allases allases เรียกใช้ฟังก์ชันหลักในรหัสที่ยาก นี่คือกฎการเขียนโปรแกรมทั่วไป
MERT DOĞAN

@ MERTDOĞANนามแฝงไม่เรียกอะไรเลย นามแฝง (ในการเขียนโปรแกรมหรือในชีวิตจริง) เป็นเพียงชื่ออื่นของวัตถุ (ที่มีชื่ออยู่แล้ว) die()ไม่ใช่ฟังก์ชั่นแยกต่างหาก exit()มันเป็นเพียงแค่ชื่อของผู้อื่น คำตอบนี้มีข้อความที่ไม่ถูกต้องเกี่ยวกับนามแฝงและประสิทธิภาพ
axiac

docs.php.net/manual/en/… นามแฝง allways โทรเหมือนตัวอย่างข้างต้น เรียนรู้บางสิ่งและกลับมา
MERT DOĞAN

-10

พวกเขาฟังดูเหมือนกันอย่างไรก็ตาม exit () ยังช่วยให้คุณสามารถตั้งรหัสทางออกของสคริปต์ PHP ของคุณ

โดยปกติแล้วคุณไม่ต้องการสิ่งนี้จริงๆ แต่เมื่อเขียนสคริปต์ PHP ของคอนโซลคุณอาจต้องการตรวจสอบเช่น Bash หากสคริปต์ทำทุกอย่างอย่างถูกต้อง

จากนั้นคุณสามารถใช้ exit () และจับได้ในภายหลัง อย่างไรก็ตาม Die () ไม่สนับสนุนสิ่งนั้น

Die () มักจะมีรหัส 0 อยู่เสมอดังนั้นโดยพื้นฐานแล้วคำสั่ง die () จะทำสิ่งต่อไปนี้:

<?php
echo "I am going to die";
exit(0);
?>

ซึ่งเหมือนกับ:

<?php
die("I am going to die");
?>

42
ที่ไม่เป็นความจริง. dieและexitเหมือนกัน (จะสร้างโทเค็น parser เดียวกัน ( T_EXIT) และถูกประมวลผลด้วยรหัสเดียวกัน) หากพารามิเตอร์เป็นจำนวนเต็มมันจะส่งคืนรหัสนั้นให้กับเชลล์ หากไม่เป็นเช่นนั้นก็จะส่งออกและส่งกลับ 0 ดังนั้นdieและexitเป็นชื่อแทนอย่างแท้จริงสำหรับแต่ละอื่น ๆ
ircmaxell

6
ถ้าคุณรู้ว่าคุณสามารถใช้ทางออก ("ฉันกำลังออก ... ");
Yuda Prawira

4
23 upvotes จนถึงตอนนี้สำหรับคำตอบที่ผิด ๆ ! นี่คือเหตุผลที่ฉันไม่เคยออกเสียงลงคะแนนในคำตอบจนกว่าฉันจะได้อ่านคำตอบทั้งหมดของการแข่งขันและเข้าใจพวกเขาทั้งหมด
Mark Amery

3
นี่เป็นสิ่งที่ @GeoffreyHale เขียนไว้ในคำตอบของเขา สิ่งที่คุณโพสต์เป็นคำตอบคือสิ่งที่คุณคาดหวังมาจากภาษาอย่าง Perl หรือ C แต่อย่างที่คนอื่นพูดถึงมันไม่เป็นความจริงสำหรับ php คุณอาจพิจารณาแก้ไขคำตอบของคุณเพื่อสะท้อนสิ่งนี้หรือลบอย่างอื่น
Levite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.