Artikel ini akan memberi anda pengenalan terperinci untuk disertakan dan diperlukan dalam PHP, supaya semua orang dapat memahami sepenuhnya sertakan dan perlukan. Mari lihat!
Dalam PHP, terdapat dua cara untuk memasukkan fail luaran iaitu sertakan dan memerlukan. Apakah perbezaan antara mereka?
Jika fail tidak wujud atau ralat berlaku, require menghasilkan ralat tahap E_COMPILE_ERROR dan atur cara berhenti berjalan. Termasuk hanya menjana amaran dan skrip akan terus dilaksanakan.
Ini adalah perbezaan utama antara mereka Dalam aspek lain, memerlukan pada asasnya sama seperti termasuk.
Selain keperluan dan sertakan biasa, terdapat juga memerlukan_sekali dan sertakan_sekali fungsinya ialah:
Mari kita lihat beberapa contoh:
// a.php 不存在 include "a.php"; // warning // require "a.php"; // error echo 111; // 使用include时111会输出 // file1.php 中只有一行代码echo 'file1'; require_once 'includeandrequire/file1.php'; // file1 require_once 'includeandrequire/file1.php'; // noting include_once 'includeandrequire/file1.php'; // noting include_once 'includeandrequire/file1.php'; // noting require 'includeandrequire/file1.php'; // file1 require 'includeandrequire/file1.php'; // file1 require 'includeandrequire/file1.php'; // file1 require 'includeandrequire/file1.php'; // file1
Kita dapat melihat bahawa apabila _sekali pertama berjaya dimuatkan, sama ada memerlukan_sekali atau sertakan_sekali , fail ini tidak akan dimuatkan lagi. Tanpa _sekali, fail akan dimuatkan berulang kali.
file2.php <?php echo 'file2:' . $a, PHP_EOL; echo 'file2:' . $b, PHP_EOL; $b = "file2"; myFile.php <?php $a = 'myFile'; $b = 'youFile'; require_once 'includeandrequire/file2.php'; echo $a, PHP_EOL; echo $b, PHP_EOL; // 输出结果 // file2:myFile // file2:youFile // myFile // file2 file3.php <?php $c = 'file3'; myFile.php <?php function test(){ require_once 'includeandrequire/file3.php'; echo $c, PHP_EOL; // file3 } test(); echo $c, PHP_EOL; // empty
Fail yang disertakan boleh mendapatkan pembolehubah dalam fail induk, dan fail induk juga boleh mendapatkan pembolehubah dalam fail yang mengandungi Walau bagaimanapun, anda perlu memberi perhatian kepada kes khas _sekali.
function foo(){ require_once 'includeandrequire/file3.php'; return $c; } for($a=1;$a<=5;$a++){ echo foo(), PHP_EOL; } // file3 // empty // empty // empty // empty
Apabila menggunakan _sekali dan memuatkan dalam gelung, hanya kandungan dalam file3.php akan dikeluarkan buat kali pertama. Oleh kerana skop pembolehubah semasa berada dalam kaedah, selepas pemuatan pertama selesai, fail berikutnya tidak akan dimuatkan lagi Pada masa ini, tiada c dalam empat gelung seterusnya dan nilai lalainya kosong.
Jika fail dimuatkan menggunakan _sekali dalam dua kaedah pada masa yang sama, adakah kaedah kedua masih memuatkannya?
function test1(){ require_once 'includeandrequire/file1.php'; } function test2(){ require_once 'includeandrequire/file1.php'; } test1(); // file1 test2(); // empty
Maaf, hanya kaedah pertama akan berjaya dimuatkan, dan kaedah kedua tidak akan dimuatkan lagi.
Jadi, yang manakah lebih baik untuk kita gunakan dalam pembangunan harian?
serta dan memerlukan fail jika terdapat sebarang pemulangan, anda boleh menggunakan pembolehubah untuk menerima data yang dikembalikan oleh retun Selain itu, mereka juga boleh memuatkan fail bukan PHP dan fail jauh (pemuatan jauh memerlukan memastikan allow_url_include dalam php.ini dihidupkan), seperti:
file4.php <?php return 'file4'; file4.txt 可以吧 myFile.php <?php $v = require 'includeandrequire/file4.php'; echo $v, PHP_EOL; // file4 include 'includeandrequire/file4.txt'; // 可以吧 include 'https://www.baidu.com/index.html'; // 百度首页的html代码
Di sini kita mempunyai pemahaman yang sangat mendalam termasuk dan memerlukan kedua-dua kaedah pemuatan fail tidak rumit, tetapi mereka juga terdedah kepada beberapa perangkap. perhatian harus diberikan kepadanya. Akhir sekali, berikut adalah bonus kecil, merangkumi kaedah untuk memuatkan semua fail dalam direktori sekaligus:
function include_all_once ($pattern) { foreach (glob($pattern) as $file) { require $file; } } include_all_once('includeandrequire/*');
测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/%E5%BD%BB%E5%BA%95%E6%90%9E%E6%98%8E%E7%99%BDPHP%E4%B8%AD%E7%9A%84include%E5%92%8Crequire.php
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Masih tidak tahu tentang memasukkan dan memerlukan dalam PHP. Lihat artikel ini!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!