Khi sử dụng PHP include
, làm cách nào tôi có thể tìm ra tệp nào đang gọi số include
? Tóm lại, tên tệp của phụ huynh là gì?Nhận tên tệp của tệp chạy PHP bao gồm
Trả lời
Cách dễ dàng là gán một biến trong tệp gốc (trước khi đưa vào), sau đó tham chiếu biến đó trong tệp được bao gồm.
file phụ huynh:
$myvar_not_replicated = __FILE__; // Make sure nothing else is going to overwrite
include 'other_file.php';
Bao gồm File:
if (isset($myvar_not_replicated)) echo "{$myvar_not_replicated} included me";
else echo "Unknown file included me";
Bạn cũng có thể lộn xộn xung quanh với get_included_files()
hoặc debug_backtrace()
và tìm sự kiện này khi nào và nơi các tập tin có bao gồm, nhưng điều đó có thể hơi lộn xộn và phức tạp.
$fileList = get_included_files();
$topMost = $fileList[0];
if ($topMost == __FILE__) echo 'no parents';
else echo "parent is $topMost";
Tôi nghĩ điều này sẽ cho kết quả phù hợp khi có một phụ huynh duy nhất.
Do đó, tôi có nghĩa là tình huống mà phụ huynh không phải là một tệp bắt buộc hoặc tệp được bao gồm.
câu trả lời muộn, nhưng ...
tôi kiểm tra tên tập tin mẹ chạy bằng cách sử dụng:
$_SERVER["SCRIPT_NAME"] // or
$_SERVER["REQUEST_URI"] // (with query string)
Điều này sẽ được đánh giá cao hơn vì điều này mang lại câu trả lời đúng mà không cần phải chỉnh sửa các tệp vùng chứa cho bao gồm. Tôi có một bao gồm cần tên của tập tin container của nó và điều này chắc chắn nhịp đập thay đổi '$ var' giá trị trong hơn 100 trang khác như các câu trả lời khác đề nghị. – Martin
** TRẢ LỜI ĐÁNH GIÁ CAO **! 'SCRIPT_NAME' trả về tệp đầu tiên nhất. và 'REQUEST_URI' đã hết hạn! họ sẽ không giúp đỡ trong bất kỳ CMS nào. Sử dụng 'debug_backtrace()' hoặc 'get_included_files()' –
@ T.Todua các vòng loại này hợp lệ nhưng cũng nằm ngoài phạm vi của câu hỏi này (và câu trả lời). '$ _SERVER ['SCRIPT_NAME']' là giá trị cần thiết ở đây. – Martin
Trong tập tin phụ huynh, thêm dòng này trước khi đưa file trẻ:
$_SESSION['parent_file'] = $_SERVER['PHP_SELF'];
Và sau đó trong tệp con, hãy đọc biến phiên:
$parent_file = $_SESSION['parent_file']
- 1. PHP CLI bao gồm() không tìm tệp
- 2. Bao gồm tệp PHP dưới dạng chuỗi
- 3. bao gồm tệp từ xa trong PHP
- 4. PHP bao gồm tệp trong foreach Loop
- 5. php bao gồm tệp trong lớp
- 6. Tạo tên tệp bao gồm trong macro
- 7. Viết biến cho tệp, bao gồm tên
- 8. Bao gồm tệp lô trong tệp lô
- 9. Bao gồm tệp .cpp?
- 10. Bao gồm các tệp PHP với khuôn khổ Laravel
- 11. Bao gồm tệp .js trong tệp .js
- 12. Kiến: Đổi tên các tệp để bao gồm MD5
- 13. PHP bao gồm(): Kích thước và hiệu suất tệp
- 14. Chuyển một biến từ một tệp php bao gồm tệp khác: toàn cục chứ không phải
- 15. Bao gồm các tệp R?
- 16. Tệp .js có thể "bao gồm" một tệp .js khác
- 17. Nhận tên tệp đang chạy trong Java?
- 18. Nhập không gian tên so với tệp bao gồm trong PHP
- 19. Cách bao gồm tệp trong tập lệnh bash shell
- 20. Tại sao bạn phải bao gồm tệp PHP, khi sử dụng không gian tên?
- 21. Bao gồm một tệp JSP khác
- 22. Không gian tên PHP và Bao gồm() với các lớp
- 23. Quay trở lại từ tệp bao gồm
- 24. Bao gồm tệp tự động WiX
- 25. Bao nhiêu PHP bao gồm quá nhiều?
- 26. Đổi tên tệp PHP
- 27. Lợi thế của việc không bao gồm thẻ đóng `?>` Trong tệp lớp PHP là gì?
- 28. Jade: Cách bao gồm tệp javascript
- 29. kết hợp tệp pdf với ghostscript, cách bao gồm tên tệp gốc?
- 30. Tệp nào được bao gồm trong tệp APK
Câu hỏi hay hơn là tại sao bạn cần biết điều này? Có lẽ có một cách tốt hơn để làm rõ ràng những gì bạn đang cố gắng hoàn thành. – Zimzat