ใน PHP:
- เมื่อฉันควรใช้
requireกับinclude? - เมื่อฉันควรใช้
require_onceกับinclude_once?
ใน PHP:
requireกับinclude?require_onceกับinclude_once?คำตอบ:
มีrequireและinclude_onceเช่นกัน
ดังนั้นคำถามของคุณควรเป็น ...
requireกับinclude?require_onceกับrequireฟังก์ชั่น require () เหมือนกันกับ include () ยกเว้นว่าจะจัดการกับข้อผิดพลาดแตกต่างกัน หากเกิดข้อผิดพลาดฟังก์ชัน include () จะสร้างคำเตือน แต่สคริปต์จะยังคงทำงานต่อไป ความต้องการ () สร้างข้อผิดพลาดร้ายแรงและสคริปต์จะหยุดทำงาน
คำสั่ง require_once () จะเหมือนกับคำสั่ง require () ยกเว้น PHP จะตรวจสอบว่าไฟล์นั้นถูกรวมไว้แล้วหรือไม่และถ้าใช่ไม่รวม (ต้องการ) อีกครั้ง
require_once()จะเร็วกว่าของทั้งสอง
ใช้
ต้อง
เมื่อแฟ้มถูกต้องโดยการประยุกต์ใช้ของคุณเช่นแม่แบบข้อความที่สำคัญหรือไฟล์ที่มีการกำหนดค่าตัวแปรโดยที่แอปจะแตก
require_once
เมื่อไฟล์มีเนื้อหาที่จะก่อให้เกิดข้อผิดพลาดในการรวมภายหลังเช่น
function important() { /* important code */}จำเป็นในแอปพลิเคชันของคุณ แต่เนื่องจากไม่สามารถรวมฟังก์ชันที่ไม่สามารถประกาศใหม่ได้
รวม
เมื่อไม่จำเป็นต้องใช้ไฟล์และแอปพลิเคชันโฟลว์ควรดำเนินการต่อเมื่อไม่พบเช่น
เหมาะสำหรับแม่แบบที่อ้างอิงตัวแปรจากขอบเขตปัจจุบันหรือบางสิ่ง
การ
พึ่งพาทางเลือกinclude_onceที่จะทำให้เกิดข้อผิดพลาดในการโหลดในภายหลังหรืออาจรวมไฟล์ระยะไกลที่คุณไม่ต้องการให้เกิดขึ้นสองครั้งเนื่องจากค่าใช้จ่าย HTTP
แต่โดยพื้นฐานแล้วขึ้นอยู่กับคุณว่าจะใช้เมื่อไร
include? include_once? require? require_once?
คำแนะนำของฉันคือใช้เพียงrequire_once99.9% ของเวลา
การใช้requireหรือincludeแทนหมายความว่ารหัสของคุณไม่ได้จากที่อื่นนำมาใช้ใหม่เช่นว่าสคริปต์ที่คุณกำลังดึงจริงรันรหัสแทนการใช้ได้ชั้นเรียนหรือบางห้องสมุดฟังก์ชั่น
หากคุณจำเป็นต้องมี / รวมถึงรหัสที่รันในจุดที่เป็นรหัสขั้นตอนและคุณจะต้องได้รับรู้กระบวนทัศน์ใหม่ เช่นเดียวกับการเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมตามฟังก์ชันหรือการโปรแกรมเชิงฟังก์ชัน
หากคุณกำลังทำ OO หรือฟังก์ชั่นการเขียนโปรแกรมอยู่แล้วการใช้งานinclude_onceส่วนใหญ่จะล่าช้าซึ่งในสแต็กคุณพบข้อบกพร่อง / ข้อผิดพลาด คุณต้องการที่จะรู้ว่าฟังก์ชั่นdo_cool_stuff()ไม่สามารถใช้งานได้เมื่อคุณไปที่จะโทรหามันในภายหลังหรือช่วงเวลาที่คุณคาดว่าจะสามารถใช้ได้โดยต้องการห้องสมุด? require_onceโดยทั่วไปจะดีที่สุดที่จะรู้ได้ทันทีว่าสิ่งที่คุณต้องการและคาดหวังว่าจะไม่สามารถใช้ได้ดังนั้นเพียงแค่การใช้งาน
หรือใน OOP สมัยใหม่เพียงแค่โหลดคลาสของคุณเองเมื่อใช้งาน
includeครอบครัวมักจะมีความคิดที่ไม่ดีตรงไปตรงมา (เพราะมันหายากสวยที่จะรวมถึงไฟล์ที่มีความเป็นไปได้ของไม่ได้มีอยู่ในปัจจุบัน) และออกจากที่require_onceและrequireคุณควรใช้require_onceเมื่อรวมถึงไฟล์ที่กำหนดฟังก์ชั่นหรือชั้นเรียนที่จะเป็น ใช้ที่อื่นหรือยกตัวอย่างซิงเกิลตันเช่นวัตถุเชื่อมต่อฐานข้อมูลและใช้requireสำหรับการรวมไฟล์ที่ทำสิ่งต่าง ๆทันทีเมื่อรวมเข้าด้วยกัน ในแอปพลิเคชันเว็บขนาดใหญ่การรวมประเภทหลังนั้นผิดปกติ
require_onceผู้สมัครมีแนวโน้มที่จะใช้อย่างสมเหตุสมผลเกือบตลอดเวลา ด้วยความแตกต่างของค่าใช้จ่ายเล็ก ๆ ระหว่างตัวเลือกrequireทำให้แน่ใจว่าสคริปต์หยุดฉันไม่สามารถนึกถึงหลาย ๆ สถานการณ์ที่แอปพลิเคชันสามารถอยู่รอดได้ และ_onceปกป้องจากปัญหาดักจับ ใครก็ตามที่ไม่เห็นด้วยน่าจะรู้ว่ากำลังทำอะไรอยู่สามารถเลือกได้ว่าจะเหมาะสมกับแอปพลิเคชันหรือสถานการณ์ใด
ความแตกต่างระหว่างฟังก์ชั่น _once และไม่มีฟังก์ชั่น _once: ไม่มีรหัส _once จะรวมอีกครั้งในขณะที่ฟังก์ชั่น _once PHP ติดตามไฟล์ที่รวมอยู่และจะรวมเพียงครั้งเดียว
ความแตกต่างระหว่างความต้องการและการรวม: หากไม่พบไฟล์ที่ต้องการ PHP จะปล่อยข้อผิดพลาดร้ายแรงในขณะที่การรวมจะมีคำเตือนเท่านั้นที่จะถูกปล่อยออกมา
include() จะส่งคำเตือนหากไม่สามารถรวมไฟล์ได้ แต่สคริปต์ที่เหลือจะทำงาน
require()จะโยนE_COMPILE_ERRORและหยุดสคริปต์หากไม่สามารถรวมไฟล์ได้
include_once()และrequire_once()ฟังก์ชั่นจะไม่รวมไฟล์เป็นครั้งที่สองถ้ามันได้รับการรวมอยู่แล้ว
ดูหน้าเอกสารประกอบต่อไปนี้:
เมื่อใดก็ตามที่คุณกำลังใช้งานrequire_once()สามารถใช้ในไฟล์เพื่อรวมไฟล์อื่นเมื่อคุณต้องการไฟล์ที่เรียกว่าเพียงครั้งเดียวในไฟล์ปัจจุบัน ในตัวอย่างฉันมี test1.php
<?php
echo "today is:".date("Y-m-d");
?>
และในไฟล์อื่นที่ฉันตั้งชื่อ test2.php
<?php
require_once('test1.php');
require_once('test1.php');
?>
ในขณะที่คุณกำลังดูไฟล์ที่ต้องใช้ไฟล์ test1 สองครั้ง แต่ไฟล์จะรวม test1 หนึ่งครั้งและสำหรับการโทรในครั้งที่สองสิ่งนี้จะถูกละเว้น และโดยไม่หยุดนิ่งจะแสดงผลลัพธ์ในครั้งเดียว
เมื่อใดก็ตามที่คุณใช้ 'include_once () `สามารถใช้ในไฟล์เพื่อรวมไฟล์อื่นเมื่อคุณต้องการไฟล์ที่ถูกเรียกมากกว่าหนึ่งครั้งในไฟล์ปัจจุบัน ในตัวอย่างนี้ฉันมีไฟล์ชื่อ test3.php
<?php
echo "today is:".date("Y-m-d");
?>
และในไฟล์อื่นที่ฉันตั้งชื่อว่า test4.php
<?php
include_once('test3.php');
include_once('test3.php');
?>
ในขณะที่คุณกำลังดูไฟล์ m รวมถึงไฟล์ test3 จะรวมไฟล์ในครั้งเดียว แต่หยุดการทำงานต่อไป
ใช้ "รวม" สำหรับเทมเพลตPHP ที่ใช้ซ้ำได้ ใช้ "ต้องการ" สำหรับห้องสมุดที่ต้องการ
"* _once" เป็นสิ่งที่ดีเพราะมันตรวจสอบว่าไฟล์นั้นโหลดมาแล้วหรือไม่ แต่มันสมเหตุสมผลสำหรับฉันใน "require_once"
คุณควรจัดระเบียบคลาสและฟังก์ชั่นการจัดระเบียบในไฟล์
ใช้require_once()สำหรับโหลดการอ้างอิง (คลาส, ฟังก์ชัน, ค่าคงที่)
ใช้require()ในการโหลดแม่แบบเช่นไฟล์
ใช้include_once()เพื่อโหลดการพึ่งพาที่เป็นทางเลือก (คลาส, ฟังก์ชั่น, ค่าคงที่)
ใช้include()ในการโหลดตัวเลือกแม่แบบเช่นไฟล์
คำถามนี้ถูกถามเมื่อเจ็ดปีที่แล้วและไม่มีคำตอบใดที่ให้ความช่วยเหลือในทางปฏิบัติสำหรับคำถาม ในการเขียนโปรแกรม PHP สมัยใหม่ส่วนใหญ่คุณจะใช้required_onceเพียงครั้งเดียวเพื่อรวมคลาส autoloader ของคุณ (บ่อยครั้งที่นักแต่งเพลงอัตโนมัติ) และมันจะโหลดคลาสและฟังก์ชั่นทั้งหมดของคุณ (ไฟล์ฟังก์ชั่นจำเป็นต้องเพิ่มcomposer.jsonไฟล์ลงในไฟล์ หากเหตุผลใดก็ตามที่คลาสของคุณไม่สามารถโหลดได้จากออโต้โหลดคุณใช้require_onceในการโหลด
requireมีบางครั้งที่เราจำเป็นต้องใช้เป็น ตัวอย่างเช่นถ้าคุณมีนิยามอาร์เรย์ขนาดใหญ่มากและคุณไม่ต้องการเพิ่มสิ่งนี้ลงในซอร์สโค้ดคำจำกัดความของคลาสคุณสามารถ:
<?php
// arr.php
return ['x'=>'y'];
<?php
//main.php
$arr= require 'arry.php'
หากไฟล์ที่คุณตั้งใจจะใส่มีสิ่งที่เรียกใช้งานได้หรือประกาศตัวแปรบางอย่างที่คุณเกือบจะต้องใช้requireเพราะถ้าคุณใช้require_onceนอกเหนือจากที่แรกรหัสของคุณจะไม่ถูกเรียกใช้และ / หรือตัวแปรของคุณจะไม่เริ่มต้นอย่างเงียบ ๆ เป็นการยากที่จะระบุ
ไม่มีกรณีการใช้งานจริงincludeและinclude_once
include(), ห่อในบัฟเฟอร์ผลลัพธ์เพื่อใช้เครื่องมือสร้างแรงดันไฟฟ้าของคุณ
require()เพื่อแยกไฟล์ขนาดใหญ่
require_onceสำหรับ PHPMailer ภายในฟังก์ชั่นและ autoloader ของฉันกำหนด$mailตัวแปรที่จำเป็นในภายหลังในรหัสดังนั้นต่อไปrequire_onceได้รับการละเว้นซึ่งเหลือ$mailไม่ได้เริ่มต้น! การแก้ปัญหาคือการใช้เพียงrequireหลังจากการเรียกใช้ฟังก์ชัน
requireในกรณีเหล่านั้นหรือไม่?
ความแตกต่างอยู่ในข้อผิดพลาดที่คำสั่งสร้างขึ้น ด้วยrequireไฟล์ที่คุณต้องการใช้เป็นสิ่งที่จำเป็นจริงๆและสร้างE_ERRORถ้าไม่พบ
require()เหมือนกับinclude()ยกเว้นเมื่อล้มเหลวมันจะสร้างE_ERRORข้อผิดพลาดระดับร้ายแรง
includeสร้างE_WARNINGข้อผิดพลาดเฉพาะถ้าล้มเหลวซึ่งมากกว่าหรือน้อยกว่าที่เงียบ
ดังนั้นให้ใช้มันหากไฟล์นั้นจำเป็นต้องใช้เพื่อให้โค้ดที่เหลือทำงานและคุณต้องการให้สคริปต์ล้มเหลวไฟล์นั้นไม่พร้อมใช้งาน
สำหรับ*_once():
include_once()อาจใช้ในกรณีที่ไฟล์เดียวกันอาจรวมอยู่และประเมินมากกว่าหนึ่งครั้งในระหว่างการเรียกใช้สคริปต์โดยเฉพาะดังนั้นในกรณีนี้มันอาจช่วยหลีกเลี่ยงปัญหาต่าง ๆ เช่นการกำหนดฟังก์ชันการกำหนดค่าตัวแปรใหม่ ฯลฯ
เช่นเดียวกับrequire_once()หลักสูตร
ข้อมูลอ้างอิง: require(),include_once()
requireให้ E_COMPILE_ERROR ไม่ใช่ E_ERROR
ด้วยต้องมีไฟล์จะต้องมีอยู่ถ้ามันไม่ได้แล้วข้อผิดพลาดจะแสดง; ในขณะที่รวมถึง - หากไฟล์ไม่อยู่แล้วหน้าจะโหลดต่อไป
ต้องการส่วนที่สำคัญเช่นการให้สิทธิ์และรวมถึงส่วนอื่น ๆ ทั้งหมด
การรวมหลายรายการเป็นการออกแบบที่แย่มากและต้องหลีกเลี่ยงเลย ดังนั้น * _once ไม่สำคัญ
รวม / ต้องการคุณสามารถรวมไฟล์เดียวกันมากกว่าหนึ่งครั้งด้วย:
require () เหมือนกับการรวม () ยกเว้นเมื่อเกิดข้อผิดพลาดมันจะสร้างข้อผิดพลาดระดับ E_COMPILE_ERROR ที่ร้ายแรง กล่าวอีกนัยหนึ่งมันจะหยุดสคริปต์ในขณะที่รวม () เพียงส่งเสียงเตือน (E_WARNING) ซึ่งอนุญาตให้สคริปต์ดำเนินการต่อ
เหมือนกันกับการรวม / ต้องการยกเว้น PHP จะตรวจสอบว่าไฟล์นั้นถูกรวมไว้แล้วหรือไม่และถ้าใช่ไม่รวม (จำเป็น) อีกครั้ง
include()จะสร้างคำเตือนเมื่อไม่พบไฟล์ แต่require_once()จะสร้างข้อผิดพลาดร้ายแรง
อีกอย่างคือถ้ารวมไฟล์ไว้ก่อนหน้านี้ จากนั้นrequire_once()จะไม่รวมไว้อีกครั้ง
ฉันใช้ฟังก์ชั่นดังนี้:
function doSomething() {
require_once(xyz.php);
....
}
มีค่าคงที่ที่ประกาศใน xyz.php
ฉันต้องเรียกใช้ฟังก์ชัน doSomething () นี้จากไฟล์สคริปต์ PHP อื่น
แต่ฉันสังเกตพฤติกรรมในขณะที่เรียกใช้ฟังก์ชันนี้ในลูปสำหรับการทำซ้ำครั้งแรก doSomething () กำลังรับค่าคงที่ภายในxyz.phpแต่หลังจากนั้นการวนซ้ำทุกครั้งdoSomething()จะไม่สามารถรับค่าคงที่ที่ประกาศไว้xyz.phpได้
ฉันจะแก้ไขปัญหาของฉันโดยเปลี่ยนจากrequire_once()การinclude()ปรับปรุงdoSomething()รหัสจะเป็นด้านล่าง:
function doSomething() {
include(xyz.php);
....
}
ตอนนี้ทุกสายย้ำจะได้รับค่าคงที่ที่กำหนดไว้ในdoSomething()xyz.php
จากคู่มือ :
require()เหมือนกับinclude()ยกเว้นเมื่อล้มเหลวมันจะสร้างE_COMPILE_ERRORข้อผิดพลาดระดับร้ายแรง กล่าวอีกนัยหนึ่งมันจะหยุดสคริปต์ในขณะที่include()เพียงปล่อยเตือน (E_WARNING) ซึ่งช่วยให้สคริปต์เพื่อดำเนินการต่อ
เช่นเดียวกันกับ_once()ตัวแปร
ในยุคของออPSR-0 / PSR-4โต้โหลดอาจไม่จำเป็นอย่างสมบูรณ์ที่จะใช้คำสั่งใด ๆ หากคุณต้องการให้ฟังก์ชั่น / คลาสพร้อมใช้งานสำหรับโค้ดของคุณ (แน่นอนว่าคุณยังคงต้องrequire_onceโหลดอัตโนมัติในไฟล์บูทสแตรปและincludeแม่แบบ ยังคงใช้ PHP เป็นเครื่องมือแม่แบบ)
เมื่อหนึ่งควรใช้requireหรือinclude?
requireและincludeฟังก์ชั่นทำงานเดียวกันคือรวมและประเมินแฟ้มที่ระบุ แต่แตกต่างกันคือrequireจะทำให้เกิดข้อผิดพลาดร้ายแรงเมื่อตั้งแฟ้มที่ระบุไม่ถูกต้องหรือความผิดพลาดใด ๆ ในขณะที่includeจะสร้างการเตือนและยังคงดำเนินการรหัส
ดังนั้นคุณอาจใช้requireฟังก์ชั่นในกรณีที่ไฟล์ที่คุณกำลังพยายามรวมอยู่เป็นหัวใจของระบบและอาจทำให้เกิดผลกระทบอย่างมากต่อส่วนที่เหลือของรหัสและคุณสามารถใช้includeฟังก์ชั่นเมื่อไฟล์ที่คุณพยายามรวมเป็น ไฟล์อย่างง่ายที่มีรหัสที่สำคัญน้อยกว่า
และคำแนะนำส่วนตัวของฉัน (สำหรับรหัสที่มีความสำคัญน้อยกว่า) คือไปที่requireฟังก์ชั่นทุกที่ในรหัสของคุณในขณะที่อยู่ในขั้นตอนการพัฒนาซึ่งคุณสามารถแก้จุดบกพร่องรหัสและในภายหลังแทนrequireฟังก์ชั่นทั้งหมดด้วยincludeฟังก์ชั่น ข้อบกพร่องใด ๆ ที่มันจะไม่ส่งผลกระทบต่อผู้ใช้และส่วนที่เหลือของรหัสดำเนินการอย่างถูกต้อง ...
เมื่อหนึ่งควรใช้require_onceหรือrequire?
ความแตกต่างขั้นพื้นฐานระหว่างrequireและrequire_onceคือrequire_onceจะตรวจสอบว่าไฟล์จะถูกรวมอยู่หรือไม่ถ้ามันจะรวมอยู่แล้วมันจะไม่รวมไฟล์ในขณะที่requireฟังก์ชั่นจะรวมไฟล์โดยไม่คำนึงถึงว่าไฟล์จะถูกรวมไว้แล้วหรือไม่
ดังนั้นในกรณีที่คุณต้องการรวมชิ้นส่วนของรหัสบางอีกครั้งและอีกครั้งใช้ฟังก์ชั่นในขณะที่ถ้าคุณต้องการรวมโค้ดบางเพียงครั้งเดียวในรหัสของคุณใช้requirerequire_once
ใช้ต้องการฟังก์ชั่นเมื่อคุณต้องการโหลดคลาสฟังก์ชั่นหรือการพึ่งพาใด ๆ
ใช้ฟังก์ชั่นincludeเมื่อคุณต้องการโหลดไฟล์สไตล์เทมเพลต
หากคุณยังสับสนอยู่ให้ใช้require_onceตลอดเวลา
เป็นวิธีรวมไฟล์ทั้งหมด
จำเป็นต้องใช้หมายความว่ามันต้องการมัน Require_once หมายความว่าจะต้องใช้ แต่ต้องการเพียงครั้งเดียวเท่านั้น รวมถึงหมายความว่ามันจะรวมไฟล์ แต่ไม่ต้องการให้ดำเนินการต่อ
ตัวอย่าง:
Require 'filename'
Require_once 'filename'
Include 'filename'
นอกจากนี้ยังมีฟังก์ชั่น include_once ซึ่งรวมไฟล์หนึ่งครั้ง
Include_once 'filename'
อย่าใช้อักษรตัวใหญ่ที่ฉันมีในขณะที่ฉันพิมพ์จากโทรศัพท์ของฉัน
สิ่งหนึ่งที่ฉันสังเกตเห็นเมื่อใช้ include ฉันสามารถเข้าถึงได้เฉพาะฟังก์ชั่นไฟล์ที่รวมไว้จากไฟล์ที่รวมไว้เท่านั้น ด้วย require_once ฉันสามารถเรียกใช้ฟังก์ชันนั้นในไฟล์ require_once ที่สอง
ยัง: ฉันแนะนำให้เพิ่ม
if(file_exists($RequiredFile)){
require_once($RequiredFile);
}else{
die('Error: File Does Not Exist');
}
เพราะเมื่อ require_once ฆ่าหน้าบางครั้งก็สามารถสะท้อนไดเรกทอรีของไฟล์เว็บไซต์ของคุณ
นี่เป็นฟังก์ชั่นที่กำหนดเองที่ฉันทำเพื่อต้องการไฟล์:
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;
}
}
ตัวอย่างการใช้งาน:
$success = addFile('functions/common');
if($success){
commonFunction();
}else{
fallbackFunction();
}
โดยทั่วไปหากคุณต้องการเส้นทางที่ผิด PHP จะส่งข้อผิดพลาดร้ายแรงและมีการปิดการทำงานของฟังก์ชั่น แต่เมื่อคุณใส่เส้นทางผิด PHP จะดำเนินการต่อ แต่จะแสดงคำเตือนว่าไฟล์นั้นไม่มีอยู่จริง
จากคำภาษาอังกฤษที่ต้องการ PHP จะบอกว่าการดำเนินการของหน้าหรือไฟล์ขึ้นอยู่กับไฟล์ที่ต้องการ
จากประสบการณ์ของฉันมันเป็นเรื่องปกติที่ต้องใช้ไฟล์ที่สำคัญเช่นไฟล์กำหนดค่าคลาสฐานข้อมูลและยูทิลิตี้ที่สำคัญอื่น ๆ
บ่อยครั้งที่คุณต้องการโหลดไลบรารี่ของลูกค้าแบบมีเงื่อนไขหรือไปข้างหน้าและโหลดว่าคุณจะใช้งานหรือไม่
นี่คือตัวอย่างที่เป็นรูปธรรม; อธิบายเพิ่มเติมเกี่ยวกับสิ่งที่ pcj พูด
สมมติว่าคุณมีไฟล์กำหนดค่าที่จัดเก็บชื่อผู้ใช้และรหัสผ่านฐานข้อมูล (conf.php):
<?php
//my site configuration file
//For Database
$location='localhost';
$dbuser='yourname';
$userpw='yourpassword';
$database='nameofdatabase';
?>
และคลาสที่มีฟังก์ชั่นสแตติกที่ใช้ฐานข้อมูล:
<?php
class UsedInLoop {
public static function databaseQuery(){
require(/path/to/conf.php); //require_once will not work here
$db = new mysqli($location, $dbuser, $userpw, $database);
//yada yada yada
}
}
?>
และฟังก์ชั่นแบบคงที่นั้นใช้ภายในฟังก์ชั่นอื่นที่ถูกเรียกซ้ำภายในวง:
<?php
require_once('path/to/arbitraryObject.php'); //either will likely be OK at this level
$obj = new arbitraryObject();
foreach($array as $element){
$obj->myFunction();
}
?>
คุณสามารถขอ / รวมคลาสได้ครั้งเดียวเท่านั้น หากคุณต้องการ / รวมไว้ในการวนซ้ำทุกครั้งคุณจะได้รับข้อผิดพลาด อย่างไรก็ตามคุณต้องรวมไฟล์ conf ทุกครั้งที่มีการเรียกใช้ฟังก์ชันคงที่
<?php
class arbitraryObject {
public function myFunction(){
require_once(/path/to/UsedInLoop.php); //This must be require_once. require() will not work
UsedInLoop::databaseQuery();
}
}
?>
แน่นอนว่าการย้ายออกไปนอกฟังก์ชั่นอาจเป็นวิธีแก้ปัญหาดังกล่าว:
<?php
require(/path/to/UsedInLoop.php); //now require() is fine
class arbitraryObject {
public function myFunction(){
UsedInLoop::databaseQuery();
}
}
?>
ยกเว้นกรณีที่คุณกังวลเกี่ยวกับค่าใช้จ่ายในการโหลดคลาสที่อาจใช้ในเงื่อนไขบางอย่างเท่านั้นและไม่ต้องการโหลดเมื่อไม่มี
requireมีค่าใช้จ่ายสูงกว่าincludeเนื่องจากต้องแยกวิเคราะห์ไฟล์ก่อน การแทนที่requiresด้วยincludesมักเป็นเทคนิคการเพิ่มประสิทธิภาพที่ดี
requireไม่แยกวิเคราะห์ไฟล์อีกincludeต่อไป _onceรุ่นของฟังก์ชั่นเหล่านั้นแต่ละคนมีบิตของค่าใช้จ่าย แต่เช่นเดียวกับคนอื่น ๆ ได้กล่าวว่ามันใกล้กับเล็กน้อยในการใช้งานมากที่สุด
เพียงใช้ต้องการและรวมถึง
เพราะคิดว่าจะทำงานอย่างไรกับ include_once หรือ require_once ที่กำลังมองหาข้อมูลบันทึกที่บันทึกรวมหรือต้องการไฟล์ PHP ดังนั้นจึงช้ากว่ารวมและจำเป็นต้องใช้
if (!defined(php)) {
include 'php';
define(php, 1);
}
แค่ใช้แบบนี้ ...