Perbedaan antara memerlukan, termasuk, require_once dan include_once?

Dalam PHP:

  • Kapan saya harus menggunakan memerlukan vs termasuk?
  • Kapan saya harus menggunakan require_once vs include_once?
Mengomentari pertanyaan (2)
Larutan

Ada memerlukan dan include_once juga.

Jadi pertanyaan anda harus...

  1. Kapan saya harus menggunakan memerlukan vs termasuk?
  2. Kapan saya harus menggunakan 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.

Komentar (17)

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.

Komentar (4)

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.

Komentar (7)

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.

Komentar (1)

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:

Komentar (0)

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.

Komentar (1)

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".

Komentar (0)

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 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.

Komentar (5)

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 dengan include() kecuali atas kegagalan ini juga akan menghasilkan fatal E_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()

Komentar (2)

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.

Komentar (0)

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.

Komentar (0)

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.

Komentar (0)

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.

require_once / include_once

identik dengan menyertakan/memerlukan kecuali PHP akan memeriksa apakah file sudah dimasukkan, dan jika demikian, tidak termasuk (memerlukan) itu lagi.

Komentar (0)

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.

Komentar (0)

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).

Komentar (0)

Dari manual:

require() identik 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.

Hal yang sama berlaku untuk _once() varian.

Komentar (0)

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.

Komentar (0)

 

  1. Kapan seseorang harus menggunakan 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...

  1. Kapan seseorang harus menggunakan 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.

Komentar (0)
  1. Menggunakan membutuhkan fungsi ketika anda perlu untuk memuat setiap kelas, fungsi, atau ketergantungan.

  2. Gunakan seperti fungsi bila anda ingin memuat template bergaya file

Jika anda masih bingung, gunakan saja require_once untuk semua waktu.

Komentar (0)

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();
}
Komentar (0)