Apakah ada perbedaan di antara mereka? Apakah menggunakannya adalah masalah preferensi? Apakah menggunakan salah satu dari yang lain menghasilkan keuntungan? Mana yang lebih baik untuk keamanan?
Apakah ada perbedaan di antara mereka? Apakah menggunakannya adalah masalah preferensi? Apakah menggunakan salah satu dari yang lain menghasilkan keuntungan? Mana yang lebih baik untuk keamanan?
Jawaban:
Anda menemukan perbedaan yang dijelaskan dalam manual PHP terperinci di halamanrequire
:
require
identik denganinclude
kecuali pada kegagalan itu juga akan menghasilkanE_COMPILE_ERROR
kesalahan tingkat fatal . Dengan kata lain, itu akan menghentikan skrip sedangkan menyertakan hanya memancarkan peringatan (E_WARNING
) yang memungkinkan skrip untuk melanjutkan.
Lihat jawaban @ efritz sebagai contoh
<?php if (isset($flibbertygibbet)) require 'file.php';
tampaknya membuat jawaban ini terlihat sangat salah. Kalau tidak, saya harus mendapatkan kesalahan fatal meskipun kondisinya tidak benar. strace
bahkan tidak memperlihatkan PHP yang mencoba menyentuh file.php
.
if (false) require 'file.php';
akan menyebabkan 'file.php' dimuat (tetapi tidak dieksekusi). TLDR mengabaikan semua komentar ini.
require
akan menyebabkan PHP Fatal Error jika file tidak dapat dimuat. (Eksekusi berhenti)
include
menghasilkan Peringatan jika file tidak dapat dimuat. (Eksekusi berlanjut)
Berikut ini adalah ilustrasi yang bagus untuk menyertakan dan membutuhkan perbedaan :
Dari: Perbedaan memerlukan vs. sertakan php (oleh Robert; Nov 2012)
Gunakan include
jika Anda tidak keberatan skrip Anda berlanjut tanpa memuat file (kalau-kalau tidak ada dll) dan Anda dapat (meskipun tidak seharusnya) hidup dengan pesan kesalahan Peringatan ditampilkan.
Menggunakan require
berarti skrip Anda akan berhenti jika tidak dapat memuat file yang ditentukan, dan melemparkan kesalahan fatal.
Seperti yang ditunjukkan orang lain, satu-satunya perbedaan adalah yang mengharuskan melempar kesalahan fatal, dan termasuk - peringatan yang bisa ditangkap. Adapun yang harus digunakan, saran saya adalah tetap menyertakan. Mengapa? karena Anda dapat menangkap peringatan dan menghasilkan umpan balik yang berarti bagi pengguna akhir. Mempertimbangkan
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
NB: misalnya 2 untuk bekerja, Anda perlu menginstal penangan kesalahan-ke-pengecualian, seperti yang dijelaskan di sini http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
Contoh Praktis yang sangat sederhana dengan kode. Gema pertama akan ditampilkan. Tidak masalah Anda menggunakan termasuk atau memerlukan karena berjalan sebelum memasukkan atau diperlukan.
Untuk memeriksa hasilnya, pada baris kedua kode dengan sengaja memberikan jalur yang salah ke file atau membuat kesalahan dalam nama file. Dengan demikian gema kedua yang akan ditampilkan atau tidak akan sepenuhnya tergantung pada apakah Anda menggunakan mengharuskan atau menyertakan .
Jika Anda menggunakan memerlukan gema kedua tidak akan mengeksekusi tetapi jika Anda menggunakan termasuk tidak peduli apa kesalahan datang Anda akan melihat hasil gema kedua juga.
Seandainya Program Sertakan tidak akan berhenti dan menampilkan peringatan di browser, Di sisi lain Memerlukan program akan berakhir dan menampilkan kesalahan fatal jika file tidak ditemukan.