ใน 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_once
99.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
ฟังก์ชั่นจะรวมไฟล์โดยไม่คำนึงถึงว่าไฟล์จะถูกรวมไว้แล้วหรือไม่
ดังนั้นในกรณีที่คุณต้องการรวมชิ้นส่วนของรหัสบางอีกครั้งและอีกครั้งใช้ฟังก์ชั่นในขณะที่ถ้าคุณต้องการรวมโค้ดบางเพียงครั้งเดียวในรหัสของคุณใช้require
require_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);
}
แค่ใช้แบบนี้ ...