2013-12-16 15 views
5

Trong tập lệnh php, tôi có một số kiểm tra và sau tập lệnh trang html.Chức năng die() hoặc exit() có cần thiết khi kết thúc tập lệnh php không?

Khi kiểm tra không thành công, tôi gọi là chết ("Kiểm tra 1 không thành công"); Nếu không có thử nghiệm nào thì tập lệnh php sẽ kết thúc?> Và sau đó tải mã html sau tập lệnh php.

Đây có phải là quy trình tốt không? Hoặc tôi cần phải viết die() hoặc exit() trước khi kết thúc kịch bản php?

+1

số Khi kịch bản đến cuối đường, nó sẽ thoát anyway. – George

+0

đọc này: http: //stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php? Rq = 1 – Karthik

+1

Nó chỉ hữu ích nếu ai đó có thể quan tâm đến mã trả về của tập lệnh, như khi bạn sử dụng nó trong môi trường trình bao. Đối với hầu hết các ứng dụng, đặc biệt là trên các máy chủ web để tạo nội dung, điều này không cần thiết theo các câu trả lời bên dưới. – CompuChip

Trả lời

5

Không, bạn không phải viết điều đó và đây là không thực tiễn tốt nhất. Nếu kịch bản đạt đến kết thúc mà không có lỗi nghiêm trọng thì nó sẽ thoát.

Nếu điều này có nghĩa là "thử nghiệm" cho bạn, bạn đã sai. Thử nghiệm nên được thực hiện bằng cách sử dụng unit tests. Đối với php có phpunit. Hãy thử nó, đó là cách thích hợp để kiểm tra mã của bạn.

Chỉnh sửa: Như CompuChip cho biết trong nhận xét, trường hợp sử dụng hữu ích duy nhất để thoát là khi bạn viết kịch bản lệnh dựa trên php để trả lại mã lỗi. See the parameter section of the documentation for the exit() function.

+0

để kiểm tra tôi có nghĩa là tôi đăng ký người dùng vào cơ sở dữ liệu. Nếu một cái gì đó thất bại đó là một thử nghiệm thất bại. – newtphp

+0

Điều này có thể và cần được kiểm tra bằng các xét nghiệm đơn vị. Cách bạn "thử nghiệm" là gỡ lỗi, không thử nghiệm. Và thay vì "chết", tập lệnh của bạn phải chuyển một thông báo lỗi thích hợp cho người dùng chứ không phải chỉ là "kilL" tập lệnh. – burzum

0

Không, bạn không phải sử dụng các chức năng này ở cuối tập lệnh, vì nó vẫn tồn tại ở cuối tập lệnh.

0

Bạn không bao giờ nên sử dụng die() hoặc exit trong tập lệnh PHP sản xuất của mình ngoại trừ trong các trường hợp rất cụ thể. Thay vào đó, hãy làm lại đường dẫn mã của bạn để chỉ hiển thị thông báo lỗi cho người dùng thay vì thoát khỏi tập lệnh sớm.

-1

Không! Điều này không được khuyến nghị sử dụng nó

Sử dụng trigger_error hoặc error_log để ghi lại các thử nghiệm trong lỗi của bạn.log. Sau đó kiểm tra nó.

+0

Vui lòng giải thích lý do tại sao nó không được khuyến khích và nếu có thể cung cấp nguồn cho nó. –

+3

Đã chỉnh sửa câu trả lời của tôi –

1

Không có bạn không cần điều đó, nhưng khi viết kịch bản lệnh PHP, bạn có thể muốn kiểm tra với ví dụ Bash nếu kịch bản hoàn thành mọi thứ đúng cách. Đó là khi bạn sử dụng exit() hoặc die()

0

Không cần phải đặt một cái chết hoặc một lối ra ở cuối của scipt. Nhưng bạn có thể sử dụng lệnh thoát để chấm dứt tập lệnh của mình bằng mã thoát cụ thể (theo mặc định là 0).

ví dụ

$ php -r "/* does nothing */;" 
$ echo $? 
0 
$ php -r "exit(123);" 
$ echo $? 
123 

http://php.net/exit

+0

thông tin bổ sung hữu ích – newtphp

1

Là die() hoặc exit() chức năng cần thiết trong phần cuối của một kịch bản php?

Không, PHP sẽ tự kết thúc tập lệnh. Nếu tập lệnh là một tệp được bao gồm (được gọi từ một tệp khác) thì tệp sẽ kết thúc tập lệnh trong tệp được bao gồm và sau đó tiếp tục với bất kỳ mã nào trong tệp gốc sau khi bạn đưa vào (nếu có bất kỳ mã nào).

Vì vậy, bạn đặt die() hoặc exit() nơi bạn muốn hoặc cần.

Để thử nghiệm, hãy đặt sau mỗi khối mã bạn kiểm tra. Tôi sử dụng chúng trong một số phần của thử nghiệm nếu tôi chỉ muốn PHP để cho tôi một cái gì đó sau đó dừng lại, chẳng hạn như in ra một mảng để đảm bảo rằng nó đang được xây dựng một cách chính xác vv
ví dụ:

print_r($array); 
exit(); 

Đối với kiểm tra mã khác, đôi khi tôi chỉ echo "Mục A làm việc", vv, chẳng hạn như trong if/else. Nếu tôi muốn biết nếu một phần cụ thể của mã đang làm việc hoặc nếu một số tiêu chí đang được đáp ứng hay không (về cơ bản, nó cho phép bạn theo dõi nơi PHP chính nó đang đi trong mã của bạn).

Tất cả những gì đã nói, không sử dụng die() hoặc exit() trong mã sản xuất. Bạn nên sử dụng một thiết lập nhắn tin thân thiện và được kiểm soát hơn. Vì lý do bảo mật và hình ảnh, vì bạn có khả năng có thể cung cấp cho họ một số thông tin như "ERROR Không tải được gì đó". Ngoài ra nó không trông đẹp khi bạn trang chỉ tải một nửa và sau đó đặt ra một thông báo lỗi trên màn hình mà có thể có nghĩa là không có gì cho người dùng cuối.

Have a đọc qua này:
PHP Error handling: die() Vs trigger_error() Vs throw Exception

Các vấn đề liên quan