2010-12-13 35 views
5

thể trùng lặp:
PHP closing tagLợi thế của việc không bao gồm thẻ đóng `?>` Trong tệp lớp PHP là gì?

Tôi đã thấy nhiều tập tin lớp học PHP mà không có một kết thúc ?> nên thay vì điều này:

<?php 
class DataTypeLine extends DataType { 
    ... 
} 
?> 

họ chỉ có điều này :

<?php 
class DataTypeLine extends DataType { 
    ... 
} 

Tôi cũng nhận thấy khi tôi tạo một file PHP mới trong Eclipse Helios, nó mặc định chỉ có một bắt đầu <?php thẻ nhưng không kết thúc thẻ?>.

Lợi thế của việc không có thẻ kết thúc là ?> là gì?

Trả lời

8

Không có lợi thế thực sự - nó giúp đảm bảo không có khoảng trống vô ý được xuất ra bằng cách thêm dòng mới vào cuối tệp có thể làm hỏng những thứ như gửi tiêu đề và như vậy.

Ví dụ, một tập tin như thế này:

<?php 
    /* do stuff */ 
?> 

<!-- note the empty space above, this comment not really part of the code --> 

sẽ phá vỡ một tập tin có sử dụng nó như thế này

<?php 
    require 'myfile.php'; 
    header('Location: http://example.com/'); 
?> 

với sản lượng đã gửi sai sót, vì những dòng trống trong file đầu tiên . Bằng cách không sử dụng ?>, bạn tránh được vấn đề tiềm tàng đó.

+0

Bạn có thể giải thích tại sao không gian có thể dẫn đến lỗi không? – lvarayut

+0

Hãy dùng thử! Ví dụ sẽ luôn luôn lỗi –

1

Đó là đề xuất kiểu mã hóa dành cho người mới. PHP ăn một đơn \n sau thẻ đóng. Tuy nhiên, nhiều người mới đến vô tình để lại thêm không gian hoặc các tab hoặc nhiều dòng mới ở đó. Trên Windows, điều này được kết hợp bằng cách có một đường dẫn?> đóng, dẫn đến isses ngay sau khi các tập lệnh được triển khai cho các máy chủ Unix.

Việc bỏ thẻ đóng cũng được hình thành dưới dạng tối ưu hóa bởi một số (như dấu nháy đơn).

5

Từ PHP documentation

Các thẻ đóng của một khối PHP tại cuối của một tập tin là không bắt buộc, và trong một số trường hợp bỏ qua nó là hữu ích khi sử dụng bao gồm() hoặc yêu cầu() , do đó, khoảng trắng không mong muốn sẽ không xảy ra tại kết thúc tệp và bạn vẫn sẽ có thể thêm tiêu đề vào phản hồi sau đó. Nó cũng hữu ích nếu bạn sử dụng bộ đệm đầu ra , và không muốn để xem khoảng trống không mong muốn được thêm vào tại phần cuối của các phần được tạo bởi các tệp đính kèm .

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