Dalam PHP:
memerlukan
vs termasuk
?require_once
vs include_once
?Ada memerlukan
dan include_once
juga.
Jadi pertanyaan anda harus...
memerlukan
vs termasuk
?require_once
vs memerlukan
Jawaban 1 dijelaskan di sini.
require() fungsi ini identik dengan include(), kecuali yang menangani kesalahan yang berbeda. Jika terjadi kesalahan, termasuk() fungsi akan menghasilkan peringatan, tapi script akan melanjutkan eksekusi. Dengan require() menghasilkan kesalahan fatal, dan script akan berhenti.
Jawaban 2 dapat ditemukan di sini.
require_once() pernyataan ini identik dengan require() kecuali PHP akan memeriksa apakah file sudah dimasukkan, dan jika demikian, tidak termasuk (memerlukan) itu lagi.
Gunakan
membutuhkan ketika file yang dibutuhkan oleh aplikasi anda, misalnya pesan penting template atau file yang berisi konfigurasi variabel yang tanpa app akan istirahat.
require_once
ketika file yang berisi konten yang akan menghasilkan kesalahan pada inklusi berikutnya, misalnya
fungsi penting() { /* kode penting */}
pasti diperlukan dalam aplikasi anda tapi karena fungsi tidak dapat redeklarasi tidak harus dimasukkan lagi.
termasuk ketika file yang tidak diperlukan dan aplikasi aliran harus terus ketika tidak ditemukan, misalnya bagus untuk referensi template variabel dari saat ini ruang lingkup atau sesuatu
include_once opsional dependensi yang akan menghasilkan kesalahan pada loading berikutnya atau mungkin remote file inclusion yang anda tidak ingin terjadi dua kali karena HTTP overhead
Tapi pada dasarnya, it's terserah anda kapan harus menggunakan yang mana.
Saran saya adalah untuk hanya menggunakan require_once
99,9% dari waktu.
Menggunakan memerlukan
atau seperti
bukan berarti bahwa kode ini tidak dapat digunakan kembali di tempat lain, yaitu bahwa script anda're menarik di benar-benar jalankan kode alih-alih membuat tersedia satu kelas atau beberapa fungsi perpustakaan.
Jika anda memerlukan/termasuk kode yang mengeksekusi di tempat, yaitu's kode prosedural, dan anda perlu mengenal paradigma baru. Seperti pemrograman berorientasi objek, fungsi pemrograman berbasis, atau pemrograman fungsional.
Jika anda're sudah melakukan OO atau pemrograman fungsional, menggunakan include_once
sebagian besar akan menunda dimana dalam tumpukan anda menemukan bug/kesalahan. Apakah anda ingin tahu bahwa fungsi do_cool_stuff()
tidak tersedia ketika anda pergi untuk memanggil untuk nanti, atau saat itu anda berharap untuk menjadi yang tersedia dengan mengharuskan perpustakaan? Umumnya, it's terbaik untuk segera mengetahui jika ada sesuatu yang anda butuhkan dan harapkan isn't tersedia, jadi hanya menggunakan require_once
.
Atau, modern OOP, hanya autoload kelas anda pada saat pemakaian.
Perbedaan antara _once fungsi dan tanpa _once fungsi: tanpa _once kode yang akan dimasukkan lagi sedangkan dengan _once fungsi PHP melacak file yang disertakan dan akan mencakup hanya sekali.
Perbedaan antara yang memerlukan dan mencakup: Jika sebuah berkas yang dibutuhkan tidak ditemukan PHP akan memancarkan sebuah kesalahan fatal sedangkan untuk hanya mencakup peringatan akan dipancarkan.
include()
akan melemparkan peringatan jika itu dapat't seperti file, tapi sisa dari script akan dijalankan.
require()
akan membuang E_COMPILE_ERROR
dan menghentikan script jika itu dapat't seperti file.
The include_once()
dan require_once()
fungsi tidak akan menyertakan file yang kedua kalinya jika sudah disertakan.
Lihat dokumentasi berikut halaman:
Setiap kali anda menggunakan require_once()
dapat digunakan dalam sebuah file untuk memasukkan file lain ketika anda perlu disebut file yang hanya satu kali dalam file saat ini.
Di sini dalam contoh saya memiliki test1.php.
<?php
echo "today is:".date("Y-m-d");
?>
dan di lain file yang saya punya yang bernama test2.php
<?php
require_once('test1.php');
require_once('test1.php');
?>
seperti yang anda menonton m membutuhkan test1 file dua kali tapi file yang akan mencakup test1 sekali dan untuk menelepon di kedua waktu ini akan diabaikan. Dan tanpa terputus-putus akan menampilkan output satu waktu.
Setiap kali anda menggunakan 'include_once()` dapat digunakan dalam sebuah file untuk memasukkan file lain ketika anda perlu disebut file lebih dari sekali dalam file saat ini. Di sini misalnya aku punya file bernama test3.php.
<?php
echo "today is:".date("Y-m-d");
?>
Dan di lain file yang saya punya yang bernama test4.php
<?php
include_once('test3.php');
include_once('test3.php');
?>
seperti yang anda menonton m termasuk test3 file termasuk file satu waktu, tetapi menghentikan pelaksanaan lebih lanjut.
Gunakan "seperti" untuk dapat digunakan kembali PHP template. Gunakan "memerlukan" untuk library yang diperlukan.
"*_once" bagus, karena itu cek apakah file tersebut sudah dimuat atau tidak, tapi itu hanya masuk akal bagi saya dalam "require_once".
Pertanyaan ini diajukan tujuh tahun yang lalu, dan tidak satupun dari jawaban yang telah memberikan bantuan praktis untuk pertanyaan. Dalam pemrograman PHP anda terutama menggunakan required_once
hanya sekali untuk menyertakan autoloader kelas (komposer autoloader sering), dan itu akan memuat semua kelas dan fungsi (fungsi file harus secara eksplisit menambahkan untuk komposer.json
file yang akan tersedia di semua file lainnya). Jika untuk alasan apapun anda tidak loadable dari autoloader anda menggunakan require_once
untuk beban itu.
Ada beberapa kesempatan bahwa kita perlu menggunakan memerlukan
. Misalnya, jika anda memiliki benar-benar besar array definisi dan anda don't ingin menambahkan ini untuk definisi kelas anda kode sumber anda dapat:
<?php
// arr.php
return ['x'=>'y'];
<?php
//main.php
$arr= require 'arry.php'
Jika file yang anda berniat untuk memasukkan mengandung sesuatu yang dapat dieksekusi atau mendeklarasikan beberapa variabel yang anda hampir selalu perlu untuk menggunakan memerlukan
, karena jika anda menggunakan require_once
terpisah dari tempat pertama anda kode tidak akan dieksekusi dan/atau variabel anda tidak akan memulai diam-diam, menyebabkan bug yang benar-benar sulit untuk menentukan.
Tidak ada penggunaan praktis kasus untuk memiliki
dan include_once
benar-benar.
Perbedaannya adalah dalam kesalahan perintah yang menghasilkan. Dengan memerlukan
, file yang ingin anda gunakan adalah benar-benar diperlukan dan dengan demikian menghasilkan E_ERROR
jika tidak ditemukan.
require()
identik denganinclude()
kecuali atas kegagalan ini juga akan menghasilkan fatalE_ERROR
tingkat kesalahan.
termasuk
hanya menghasilkan E_WARNING
kesalahan jika gagal yang lebih atau kurang diam.
Jadi gunakan ini jika berkas yang dibutuhkan untuk membuat kode yang tersisa bekerja dan anda ingin script untuk gagal file tidak tersedia.
Untuk *_once()
:
include_once()
dapat digunakan dalam kasus-kasus di mana file yang sama mungkin akan dimasukkan dan dievaluasi lebih dari sekali selama pelaksanaan khusus dari script, jadi dalam hal ini dapat membantu menghindari masalah seperti fungsi redefinitions, nilai variabel pengaturan kembali, dll.
Yang sama berlaku untuk require_once()
tentu saja.
Referensi: memerlukan()
, include_once()
Anda harus menjaga kelas dan fungsi definisi diselenggarakan dalam file.
Gunakan require_once()
untuk memuat ketergantungan (kelas, fungsi, konstanta).
Gunakan require()
untuk memuat template-seperti file.
Gunakan include_once()
untuk memuat opsional dependensi (kelas, fungsi, konstanta).
Gunakan include()
untuk memuat opsional template-seperti file.
Seperti / Membutuhkan anda dapat menyertakan file yang sama lebih dari sekali juga:
require() sama dengan include() kecuali atas kegagalan ini juga akan menghasilkan fatal E_COMPILE_ERROR tingkat kesalahan. Dengan kata lain, itu akan menghentikan script sedangkan include() hanya memancarkan peringatan (E_WARNING) yang memungkinkan script untuk melanjutkan.
identik dengan menyertakan/memerlukan kecuali PHP akan memeriksa apakah file sudah dimasukkan, dan jika demikian, tidak termasuk (memerlukan) itu lagi.
include()
akan menghasilkan peringatan ketika itu doesn't menemukan sebuah file, tapi require_once()
akan menghasilkan kesalahan fatal.
Hal lain adalah jika file yang disertakan sebelumnya. Kemudian require_once()
tidak akan seperti itu lagi.
Di usia PSR-0 / PSR-4
autoloaders, itu mungkin benar-benar tidak perlu untuk menggunakan salah satu pernyataan jika semua yang anda butuhkan adalah untuk membuat beberapa fungsi / kelas yang tersedia untuk kode anda (tentu saja, anda masih perlu untuk require_once
autoloader itu sendiri di file bootstrap dan termasuk
template jika anda masih menggunakan PHP sebagai template engine).
Dari manual:
require()
identik denganinclude()
kecuali atas kegagalan ini juga akan menghasilkan fatalE_COMPILE_ERROR
tingkat kesalahan. Dengan kata lain, itu akan menghentikan script sedangkaninclude()
hanya memancarkan peringatan (E_WARNING
) yang memungkinkan script untuk melanjutkan.
Hal yang sama berlaku untuk _once()
varian.
Saya menggunakan fungsi sebagai berikut:
function doSomething() {
require_once(xyz.php);
....
}
Ada nilai-nilai konstan dinyatakan dalam xyz.php.
Aku harus menelepon ini melakukan sesuatu() fungsi dari file skrip PHP.
Tapi saya mengamati perilaku saat memanggil fungsi ini dalam sebuah loop, untuk iterasi pertama melakukan sesuatu() mendapatkan nilai konstan dalam xyz.php
, tapi kemudian setiap iterasi melakukan sesuatu()
adalah tidak dapat untuk mendapatkan nilai konstan dinyatakan dalam xyz.php
.
Saya memecahkan masalah saya dengan beralih dari require_once()
untuk include()
, diperbarui melakukan sesuatu()
kode seperti di bawah ini:
function doSomething() {
include(xyz.php);
....
}
Sekarang setiap iterasi panggilan untuk melakukan sesuatu()
mendapat nilai yang konstan didefinisikan dalam xyz.php
.
memerlukan
atau termasuk
?Yang memerlukan
dan memiliki
fungsi melakukan tugas yang sama, yaitu meliputi dan mengevaluasi file yang ditentukan, tetapi perbedaannya adalah memerlukan
akan menyebabkan kesalahan yang fatal ketika tentukan lokasi file yang tidak valid atau untuk setiap kesalahan sedangkan termasuk
akan menghasilkan peringatan dan melanjutkan eksekusi kode.
Sehingga anda dapat menggunakan memerlukan
fungsi dalam kasus di mana file yang anda mencoba untuk memasukkan adalah jantung dari sistem dan dapat menyebabkan dampak besar pada sisa kode dan anda dapat menggunakan termasuk
fungsi ketika file yang anda mencoba untuk memasukkan lebih sederhana file yang berisi beberapa kurang penting kode.
Dan rekomendasi pribadi saya (kurang penting code) adalah untuk pergi untuk memerlukan
fungsi di mana-mana dalam kode anda saat ini dalam tahap pengembangan sehingga anda dapat men-debug kode dan kemudian mengganti semua memerlukan
fungsi termasuk
fungsi sebelum pindah ke produksi sehingga jika anda melewatkan bug itu tidak akan mempengaruhi pengguna akhir dan sisanya dari kode yang mengeksekusi dengan baik...
require_once
atau memerlukan
?Perbedaan mendasar antara memerlukan
dan require_once
adalah require_once
akan memeriksa apakah file tersebut sudah termasuk atau tidak jika hal itu sudah masuk maka tidak't menyertakan file sedangkan memerlukan
fungsi akan menyertakan file terlepas dari apakah file sudah disertakan atau tidak.
Jadi dalam kasus di mana anda ingin memasukkan beberapa potongan kode lagi dan lagi gunakan memerlukan
fungsi sedangkan jika anda ingin memasukkan beberapa kode hanya sekali dalam kode anda, gunakan require_once
.
Menggunakan membutuhkan fungsi ketika anda perlu untuk memuat setiap kelas, fungsi, atau ketergantungan.
Gunakan seperti fungsi bila anda ingin memuat template bergaya file
Jika anda masih bingung, gunakan saja require_once untuk semua waktu.
satu hal yang saya perhatikan, ketika menggunakan include aku hanya dapat mengakses file yang disertakan fungsi dari file yang disertakan. Dengan require_once, saya dapat menjalankan fungsi itu di kedua required_once file.
juga: saya sarankan menambahkan
if(file_exists($RequiredFile)){
require_once($RequiredFile);
}else{
die('Error: File Does Not Exist');
}
Karena ketika require_once membunuh halaman, hal ini dapat kadang-kadang echo direktori file website anda
Berikut ini's fungsi kustom yang saya buat untuk memerlukan file:
function addFile($file, $type = 'php', $important=false){
//site-content is a directory where I store all the files that I plan to require_once
//the site-content directory has "deny from all" in its .htaccess file to block direct connections
if($type && file_exists('site-content/'.$file.'.'.$type) && !is_dir('site-content/'.$file.'.'.$type)){
//!is_dir checks that the file is not a folder
require_once('site-content/'.$file.'.'.$type);
return 'site-content/'.$file.'.'.$type;
}else if(!$type && file_exists('site-content/'.$file) && !is_dir('site-content/'.$file)){
//if you set "$type=false" you can add the file type (.php, .ect) to the end of the "$file" (useful for requiring files named after changing vars)
require_once('site-content/'.$file);
return 'site-content/'.$file;
}else if($important){
//if you set $important to true, the function will kill the page (which also prevents accidentally echoing the main directory path of the server)
die('Server Error: Files Missing');
return false;
}else{
//the function returns false if the file does not exist, so you can check if your functions were successfully added
return false;
}
}
contoh penggunaan:
$success = addFile('functions/common');
if($success){
commonFunction();
}else{
fallbackFunction();
}