Một tập tin PHP nên kết thúc như thế nào?

Một số người thề bằng cách đóng các tệp PHP của họ bằng ?>, một số người nói rằng bỏ nó đi sẽ tối ưu hơn

Tôi biết rằng không cần thiết phải có nó ở đó, tôi chỉ tự hỏi những ưu và nhược điểm của việc này là gì và phương pháp hay nhất là gì

Even those with a modest grasp of PHP know that code must be enclosed within special tags.

Ghi chú. Các thẻ PHP thay thế

You may also be aware that PHP code can be delimited with the lesser-used tags.If short_open_tag is enabled within php.ini, you can use although they should be avoided if you’re embedding code within XHTML or XML.Finally, you can use the ASP-style <% and %> tags if asp_tags is set within php.ini.

Tuy nhiên, nếu tệp của bạn chỉ chứa PHP — và không có mã HTML thoát — thẻ đóng ?> hoàn toàn không bắt buộc. Nhiều nhà phát triển lập luận rằng nên xóa mã không cần thiết nhưng có một lý do khác mà bạn có thể xem xét loại bỏ thẻ đóng. Giả sử chúng ta có một thư viện hàm PHP có tên là thư viện. php

<?php// library functionsfunction DoStuff() {	// code}?> 

Thư viện được bao gồm bên trong tệp mục nhập chính của chúng tôi, chỉ mục. php

<?phpinclude('library.php');// write a headerheader('X-Demo: Example');// set cookiesetcookie('TestCookie', 'Example');?><p>End of index.php file.</p>

Thật không may, 2 cảnh báo với cùng một thông báo xuất hiện khi trang này được tải

Warning: Cannot modify header information - headers already sent

Hoặc tệ hơn, nếu bạn có thể đang chạy trong môi trường trực tiếp nơi các cảnh báo đã bị tắt và không có thông báo nào xuất hiện. Trong cả hai trường hợp, tiêu đề hoặc cookie đều không được đặt và điều đó có thể gây ra sự cố ứng dụng nghiêm trọng. Điều gì gây ra lỗi? . tập tin php. Khi nó được đưa vào đầu chỉ mục. php, không gian đó được gửi dưới dạng nội dung trang tới trình duyệt — cùng với tất cả các tiêu đề HTTP cần thiết. Khi khối nội dung đầu tiên đã được gửi, không thể đặt thêm tiêu đề hoặc cookie

Ghi chú. Bộ đệm đầu ra PHP

Các phiên bản hiện đại của PHP đặt cờ output_buffering trong php. ban đầu. Điều này đệm đầu ra HTML của bạn và gửi nó khi mã PHP của bạn đã được xử lý hoặc khi bộ đệm đạt đến giới hạn (e. g. 4.096 byte). Bạn cũng có thể sử dụng ob_start()ob_end_flush() của PHP để thực hiện chức năng đệm của riêng bạn. Nếu bộ đệm đầu ra được bật, bạn có thể đặt tiêu đề HTTP và cookie sau khi xuất HTML vì mã trả về không được gửi tới trình duyệt ngay lập tức. Lưu ý rằng các phiên bản cũ hơn của PHP và một số ISP không kích hoạt bộ đệm đầu ra — nó ảnh hưởng đến hiệu suất của máy chủ và yêu cầu nhiều bộ nhớ hơn. Ngay cả khi bạn chắc chắn rằng bộ đệm nhất định luôn được bật, bạn vẫn nên đặt tiêu đề HTTP và cookie trước khi gửi nội dung trang

Ứng dụng PHP của bạn có thể bao gồm hàng chục tệp thư viện hoặc tệp lớp. Như bạn có thể tưởng tượng, có thể khó tìm kiếm các khoảng trống bổ sung, dấu xuống dòng hoặc bất kỳ ký tự nào khác sau dấu đóng ?>. May mắn thay, có một sửa chữa dễ dàng. Nếu bạn bỏ qua phần đóng ?> trong tất cả các tệp mã chỉ dành cho PHP của mình, đơn giản là không thể xảy ra lỗi — trình phân tích cú pháp sẽ bỏ qua khoảng trắng. Đó là một giải pháp, nhưng bạn sẽ sử dụng nó chứ?

Chia sẻ bài viết này

Craig Buckler

Craig là một nhà tư vấn web tự do ở Vương quốc Anh, người đã xây dựng trang đầu tiên của mình cho IE2. 0 vào năm 1995. Kể từ thời điểm đó, anh ấy đã ủng hộ các tiêu chuẩn, khả năng truy cập và các kỹ thuật HTML5 thực hành tốt nhất. Anh ấy đã tạo các thông số kỹ thuật doanh nghiệp, trang web và ứng dụng trực tuyến cho các công ty và tổ chức bao gồm Nghị viện Vương quốc Anh, Nghị viện Châu Âu, Bộ Năng lượng & Biến đổi Khí hậu, Microsoft, v.v. Anh ấy đã viết hơn 1.000 bài báo cho SitePoint và bạn có thể tìm thấy anh ấy @craigbuckler

Tôi đã rất ngạc nhiên trước phản hồi cho bài viết gần đây của mình, Bạn có nên đóng các thẻ mã PHP của mình không?

Tóm lại, việc đóng các thẻ PHP (?>) là hoàn toàn tùy chọn nếu bạn đang mã hóa một tệp chỉ có PHP và không có HTML xen kẽ. Các tệp chứa định nghĩa một lớp là những ứng cử viên tốt

Bỏ qua thẻ đóng có một lợi ích khác. không thể vô tình thêm khoảng trắng vào cuối tệp. Do đó, không thể gửi đầu ra tới trình duyệt trước khi tiêu đề trang HTTP được sửa đổi

Nhiều người được hỏi coi đây là một vụ hack và nói rằng các lập trình viên PHP chỉ nên sửa mã của họ. Đối với những người khác, việc bỏ qua thẻ đóng sẽ ngăn ngừa khả năng xảy ra lỗi — ngay cả khi không tồn tại lỗi nào. Điều này có thể đặc biệt hữu ích cho các dự án có nhiều cộng tác viên sử dụng các IDE khác nhau

Những người được hỏi chủ yếu rơi vào một trong ba nhóm

  1. Các nhà phát triển PHP, có lẽ đang làm việc trên các dự án hoặc nhóm lớn hơn, trong đó việc bỏ qua phần đóng ?> là hữu ích, được đề xuất hoặc là một tiêu chuẩn mã hóa được ghi lại
  2. Những người theo chủ nghĩa thuần túy mã hóa, có thể có nền tảng về XHTML hoặc XML, những người coi việc thiếu thẻ là sai
  3. Các nhà phát triển từ các lĩnh vực khác coi cuộc thảo luận là lố bịch

Theo cuộc thăm dò của SitePoint, một phần ba các nhà phát triển PHP đã không sử dụng thẻ đóng, một phần ba cho rằng đó là cách làm không tốt và một phần ba không nhận ra rằng nó có thể được bỏ qua

Đối với bản ghi, tôi thường bỏ qua thẻ đóng. Nó không có gì khác biệt đối với trình thông dịch PHP hoặc trình duyệt, vì vậy có rất ít lý do để đưa nó vào. Tuy nhiên, tôi có thể đánh giá cao lý do tại sao một số nhà phát triển không thích phong cách mã hóa

Một số khái niệm thú vị đã được đưa ra. Đầu tiên là trình thông dịch có thể sử dụng mã PHP theo mặc định và cho phép thoát sang HTML, e. g


// PHP file
DoSomeStuff();
<?html
<p>output HTML</p>
?>
DoMoreStuff();

Tôi nghi ngờ ý tưởng này là quá cách mạng. Nó có thể được thêm vào dưới dạng php. ini, nhưng nó sẽ phá vỡ các ứng dụng hiện có và gây ra sự hỗn loạn

Tuy nhiên, các tệp PHP thuần túy là một ý tưởng có nhiều tiềm năng hơn. Về bản chất, bạn chỉ định rằng một tệp chỉ chứa mã PHP. Điều này có thể đạt được bằng cách

  • sử dụng phần mở rộng tập tin đặc biệt, e. g. tên tập tin. pphp hoặc
  • sử dụng chức năng bao gồm/yêu cầu đã sửa đổi, chẳng hạn như

include('filename.php', PHP_ONLY);

Nếu điều này được triển khai, mã PHP của bạn sẽ không yêu cầu mở hoặc đóng thẻ. Ngoài ra, chức năng này có thể được thêm vào mà không ảnh hưởng đến các ứng dụng PHP hiện có — nó sẽ tương thích ngược

Nhưng, này, đó chỉ là một ý tưởng và có thể không bao giờ đi xa hơn bài viết này. Cuộc tranh luận về phong cách mã hóa PHP sẽ nổ ra trên…

Chia sẻ bài viết này

Craig Buckler

Craig là một nhà tư vấn web tự do ở Vương quốc Anh, người đã xây dựng trang đầu tiên của mình cho IE2. 0 vào năm 1995. Kể từ thời điểm đó, anh ấy đã ủng hộ các tiêu chuẩn, khả năng truy cập và các kỹ thuật HTML5 thực hành tốt nhất. Anh ấy đã tạo các thông số kỹ thuật doanh nghiệp, trang web và ứng dụng trực tuyến cho các công ty và tổ chức bao gồm Nghị viện Vương quốc Anh, Nghị viện Châu Âu, Bộ Năng lượng & Biến đổi Khí hậu, Microsoft, v.v. Anh ấy đã viết hơn 1.000 bài báo cho SitePoint và bạn có thể tìm thấy anh ấy @craigbuckler

Làm cách nào để chấm dứt tập lệnh PHP?

Trong PHP, lập trình viên có thể chấm dứt việc thực thi tập lệnh bằng cách chỉ định một phương thức/hàm được gọi là phương thức exit() trong tập lệnh . Ngay cả khi hàm exit() được gọi, các hàm tắt máy và hàm hủy đối tượng sẽ được thực thi mà không bị gián đoạn.

Cách chính xác để bắt đầu và kết thúc một khối mã PHP là gì?

8) Đâu là hai cách chính xác và phổ biến nhất để bắt đầu và kết thúc một khối mã PHP? . ? php [ --- Mã PHP---- ] ?> và

Điều gì được sử dụng để kết thúc một câu lệnh trong PHP?

Mô tả. Câu lệnh PHP kết thúc bằng dấu chấm phẩy (;) .

Bạn có nên đóng thẻ PHP?

Đối với các tệp chỉ chứa mã PHP, thẻ đóng ("?>") không bao giờ được phép . Nó không được PHP yêu cầu và việc bỏ qua nó sẽ ngăn chặn việc vô tình chèn khoảng trắng ở cuối vào phản hồi.