Στην PHP:
include
;require_once
έναντι include_once
;Υπάρχουν επίσης τα require
και include_once
.
Οπότε η ερώτησή σας θα πρέπει να είναι...
require
έναντι του include
;require_once
έναντι του require
.Η απάντηση στο 1 περιγράφεται εδώ.
Η συνάρτηση require() είναι πανομοιότυπη με τη συνάρτηση include(), με τη διαφορά ότι χειρίζεται διαφορετικά τα σφάλματα. Εάν προκύψει σφάλμα, η συνάρτηση include() παράγει μια προειδοποίηση, αλλά το σενάριο θα συνεχίσει την εκτέλεση. Η require() παράγει ένα μοιραίο σφάλμα και το σενάριο θα σταματήσει.
Η απάντηση στο 2 μπορεί να βρεθεί εδώ.
Η δήλωση require_once() είναι πανομοιότυπη με την require() εκτός από το ότι η PHP θα ελέγξει αν το αρχείο έχει ήδη συμπεριληφθεί και αν ναι, δεν θα το συμπεριλάβει (require) ξανά.
Διαφορά μεταξύ των συναρτήσεων _once και των συναρτήσεων χωρίς _once: ενώ με τις συναρτήσεις _once η PHP παρακολουθεί τα περιεχόμενα αρχεία και θα τα συμπεριλάβει μόνο μία φορά.
Διαφορά μεταξύ require και include: Εάν ένα απαιτούμενο αρχείο δεν βρεθεί η PHP θα εκπέμψει ένα μοιραίο σφάλμα ενώ για το include θα εκπέμψει μόνο μια προειδοποίηση.
Η διαφορά έγκειται στο σφάλμα που δημιουργούν οι εντολές. Με την εντολή require
, το αρχείο που θέλετε να χρησιμοποιήσετε είναι πραγματικά απαιτούμενο και συνεπώς παράγει ένα E_ERROR
αν δεν βρεθεί.
Η
require()
είναι πανομοιότυπη με τηνinclude()
με τη διαφορά ότι σε περίπτωση αποτυχίας θα παράγει επίσης ένα μοιραίο σφάλμα επιπέδουE_ERROR
.
Η include
παράγει μόνο ένα σφάλμα E_WARNING
αν αποτύχει, το οποίο είναι λίγο πολύ σιωπηλό.
Χρησιμοποιήστε το λοιπόν αν το αρχείο είναι απαραίτητο για να λειτουργήσει ο υπόλοιπος κώδικας και θέλετε το σενάριο να αποτύχει το αρχείο δεν είναι διαθέσιμο.
Για την *_once()
:
Η
include_once()
μπορεί να χρησιμοποιηθεί σε περιπτώσεις όπου το ίδιο αρχείο μπορεί να συμπεριληφθεί και να αξιολογηθεί περισσότερες από μία φορές κατά τη διάρκεια μιας συγκεκριμένης εκτέλεσης ενός σεναρίου, οπότε σε αυτή την περίπτωση μπορεί να βοηθήσει στην αποφυγή προβλημάτων όπως επαναπροσδιορισμοί συναρτήσεων, επαναπροσδιορισμοί τιμών μεταβλητών κ.λπ.
Το ίδιο ισχύει φυσικά και για την require_once()
.
Αναφορά: require()
, include_once()