Lebih
Perbedaan antara memerlukan, termasuk, require_once dan include_once?
Dalam PHP:
- Kapan saya harus menggunakan
memerlukan
vstermasuk
? - Kapan saya harus menggunakan
require_once
vsinclude_once
?
1162
24
Ada
memerlukan
daninclude_once
juga.Jadi pertanyaan anda harus...
memerlukan
vstermasuk
?require_once
vsmemerlukan
Jawaban 1 dijelaskan di sini.
Jawaban 2 dapat ditemukan di sini.
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
atauseperti
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 fungsido_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 menggunakanrequire_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 membuangE_COMPILE_ERROR
dan menghentikan script jika itu dapat't seperti file.The
include_once()
danrequire_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.dan di lain file yang saya punya yang bernama test2.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.
Dan di lain file yang saya punya yang bernama test4.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".
Jawaban setelah 7 tahun untuk 2018
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 untukkomposer.json
file yang akan tersedia di semua file lainnya). Jika untuk alasan apapun anda tidak loadable dari autoloader anda menggunakanrequire_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: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 menggunakanrequire_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
daninclude_once
benar-benar.Perbedaannya adalah dalam kesalahan perintah yang menghasilkan. Dengan
memerlukan
, file yang ingin anda gunakan adalah benar-benar diperlukan dan dengan demikian menghasilkanE_ERROR
jika tidak ditemukan.termasuk
hanya menghasilkanE_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()
: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.Dengan memerlukan file yang harus ada, jika itu doesn't maka pesan kesalahan akan ditampilkan, sedangkan dengan menyertakan: - jika file doesn't ada maka maka halaman akan loading terus.
Membutuhkan bagian-bagian penting, seperti otorisasi dan seperti semua orang lain.
Beberapa mencakup hanya desain yang sangat buruk dan harus dihindari sama sekali. Jadi, *_once doesn't benar-benar peduli.
Seperti / Membutuhkan anda dapat menyertakan file yang sama lebih dari sekali juga:
require_once / include_once
include()
akan menghasilkan peringatan ketika itu doesn't menemukan sebuah file, tapirequire_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 untukrequire_once
autoloader itu sendiri di file bootstrap dantermasuk
template jika anda masih menggunakan PHP sebagai template engine).Dari manual:
Hal yang sama berlaku untuk
_once()
varian.Saya menggunakan fungsi sebagai berikut:
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 iterasimelakukan sesuatu()
adalah tidak dapat untuk mendapatkan nilai konstan dinyatakan dalamxyz.php
.Saya memecahkan masalah saya dengan beralih dari
require_once()
untukinclude()
, diperbaruimelakukan sesuatu()
kode seperti di bawah ini:Sekarang setiap iterasi panggilan untuk
melakukan sesuatu()
mendapat nilai yang konstan didefinisikan dalamxyz.php
.memerlukan
atautermasuk
?Yang
memerlukan
danmemiliki
fungsi melakukan tugas yang sama, yaitu meliputi dan mengevaluasi file yang ditentukan, tetapi perbedaannya adalahmemerlukan
akan menyebabkan kesalahan yang fatal ketika tentukan lokasi file yang tidak valid atau untuk setiap kesalahan sedangkantermasuk
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 menggunakantermasuk
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 semuamemerlukan
fungsitermasuk
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
ataumemerlukan
?Perbedaan mendasar antara
memerlukan
danrequire_once
adalahrequire_once
akan memeriksa apakah file tersebut sudah termasuk atau tidak jika hal itu sudah masuk maka tidak't menyertakan file sedangkanmemerlukan
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, gunakanrequire_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
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:
contoh penggunaan: