Một .inc là gì và tại sao sử dụng nó?


139

Tôi thường thấy các ví dụ trong PHP bao gồm các tệp .inc. Ý nghĩa của .inc là gì? Nó dùng để làm gì? Những nhược điểm và lợi thế của việc sử dụng nó là gì?

Câu trả lời:


268

Nó không có nghĩa, nó chỉ là một phần mở rộng tập tin. Đó là quy ước của một số người để đặt tên các tệp có phần mở rộng .inc nếu tệp đó được thiết kế để được bao gồm bởi các tệp PHP khác, nhưng đó chỉ là quy ước.

Có một nhược điểm có thể xảy ra là các máy chủ thường không được cấu hình để phân tích các tệp .inc dưới dạng php, vì vậy nếu tệp nằm trong gốc web của bạn và máy chủ của bạn được định cấu hình theo cách mặc định, người dùng có thể xem mã nguồn php của bạn trong tệp .inc bằng cách truy cập URL trực tiếp.

Ưu điểm duy nhất có thể của nó là dễ dàng xác định tập tin nào được sử dụng bao gồm. Mặc dù chỉ cần cung cấp cho họ một phần mở rộng .php và đặt chúng vào một thư mục bao gồm có tác dụng tương tự mà không có nhược điểm được đề cập ở trên.


8
@domanokz Có rồi sẽ an toàn khi sử dụng. Nó sẽ chỉ được coi là php khi được sử dụng trong một requirehoặc includecấu trúc và được coi là văn bản thuần túy trong thời gian còn lại. Coi nó là văn bản trên máy chủ của bạn sẽ không bị tổn thương, nó chỉ đau khi mã của bạn được cung cấp dưới dạng văn bản cho người dùng cuối).
Paul

@Paulpro Tôi đã tự hỏi điều này một thời gian, cảm ơn bạn đã làm rõ điều này!
RealDeal_EE'18

1
Giải thích tuyệt vời. Chỉ cần bắt đầu ở một công việc mới và thấy những thứ này rải rác trong suốt ứng dụng. Tôi không biết đó hoàn toàn là một quy ước. Cảm ơn!
Chev

4
Về việc máy chủ không được cấu hình thành các tệp parse.inc dưới dạng php. Nó không thực sự cần phải được đọc vì chúng chỉ được đọc từ các tệp php khác trong yêu cầu / bao gồm. Có an toàn không? Như Paulpro chỉ ra rằng bạn không muốn mã đọc của người dùng cuối tò mò, do đó, bạn muốn định cấu hình các tệp để người dùng cuối không thể truy xuất được bằng một cái gì đó như "RedirectMatch 403 /.*\.inc$" trong Apache conf hoặc. htaccess
ClearCrescendo

Lưu ý: Điều này không chỉ dành cho .php.inc. PHP cũng bao gồm làm việc với các loại tệp khác. Bao gồm một, '.html', '.js', '.css', '.txt' hoặc bất kỳ phần mở rộng tệp tùy chỉnh nào bạn có thể nghĩ ra cũng sẽ khiến PHP phân tích cú pháp đọc mã PHP từ nó. Hữu ích khi bạn muốn tạo cơ sở dữ liệu dựa trên tệp và muốn biết nếu đó là tệp cơ sở dữ liệu. như .data. Sau đó, bạn có thể sử dụng nhận xét @ ClearCrescendo ở trên để bảo mật nó.
Jomar Sevillejo 8/12/2015

71

Nếu bạn lo lắng về nội dung của tệp được phục vụ hơn là đầu ra của nó. Bạn có thể sử dụng một phần mở rộng gấp đôi như : file.inc.php. Sau đó, nó phục vụ cùng một mục đích hữu ích và bảo trì.

Tôi thường có 2 tệp php cho mỗi trang trên trang web của mình:

  1. Một tên có welcome.phptrong thư mục gốc, chứa tất cả các đánh dấu HTML.
  2. Và một tên khác welcome.inc.phptrong incthư mục, chứa tất cả các hàm PHP dành riêng cho welcome.phptrang.

EDIT: Một lợi ích khác của việc sử dụng phần mở rộng kép .inc.phplà bất kỳ IDE nào vẫn có thể nhận ra tệp dưới dạng mã PHP.


4
+1 Điều đáng nói, tôi đã làm điều đó trong một trong những dự án của mình.
dpp

17

Nói chung có nghĩa là một tệp cần được đưa vào và không tạo tập lệnh độc lập.

Đây là một quy ước không phải là một kỹ thuật lập trình.

Mặc dù nếu máy chủ web của bạn không được định cấu hình đúng, nó có thể hiển thị các tệp có phần mở rộng như .inc.


12

Đó chỉ là một cách để nhà phát triển có thể dễ dàng xác định các tệp được sử dụng như bao gồm. Đó là một quy ước phổ biến. Nó không có bất kỳ ý nghĩa đặc biệt nào đối với PHP và sẽ không thay đổi hành vi của PHP hoặc chính tập lệnh.


4

Đây là quy ước mà lập trình viên thường sử dụng để xác định các tên tệp khác nhau để bao gồm các tệp. Vì vậy, nếu các nhà phát triển khác đang làm việc với mã của họ, anh ta có thể dễ dàng xác định lý do tại sao tệp này ở đó và mục đích của tệp này là gì khi chỉ cần nhìn thấy tên của tệp.


3

Chỉ cần thêm. Một nhược điểm khác là, các tệp .inc không được IDE nhận ra, do đó, bạn không thể tận dụng các tính năng dự đoán tự động hoàn thành hoặc mã.


2

Theo tôi, chúng được sử dụng như một cách để nhanh chóng tìm thấy các tệp bao gồm khi phát triển. Thực sự những điều này đã được làm cho lỗi thời với các quy ước và thiết kế khung.


Đây là bình luận vô nghĩa. Tôi luôn sử dụng .inc để bao gồm các tệp vì nó dễ dàng và không có tiêu cực, và chỉ có tích cực. Thuật ngữ 'quy ước' không có tham chiếu mà tôi biết trong bối cảnh này. Và các khung công tác PHP, không có ý tưởng, không bao giờ tự chạm vào chúng, tôi viết mã, vì vậy quan niệm rằng "các khung" đã thay thế mã hóa PHP là sai. Không có gì sai khi sử dụng công cụ nếu bạn thích nó, nhưng tin rằng nó đã thay thế chương trình tiêu chuẩn, trong các trình soạn thảo mã, là sai.
Lizardx

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.