หน้าหลัก โค้ด-บทความ php โค้ด-บทความ javascript โค้ด-บทความ css สารบัญ สารบัญ

ทักทายครับ

สวัสดีครับ หลังจากที่ blog นี้หยุดการอัพเดททบความเกี่ยวกับโค้ดในการใช้ทำเวปไปนานไม่ว่าจะเป็น code php, html, javascript, css, ajax เนื่องจากผมไม่ค่อยมีเวลาจนลืม blog นี้ไปเลย นึกขึ้นได้ตอนปีใหม่ ไปค้นหาใน google แล้วตกใจ เนื่องจาก blog นี้ไปอยู่ลำดับที่ 1 ของการค้นหา ไม่เชื่อลองดู เลยขอถือโอกาสเริ่มต้นใหม่ในช่วงปีใหม่นี้เริ่มอัพเดทบทความตั้งแต่ตอนนี้เป็นต้นไป หวังเป็นอย่างยิ่งว่าจะมีผู้ติดตามบทความของผมต่อไปน่ะครับ ปล.ท่านใดสนใจลงโฆษณาสามารถติดต่อได้ที่ hotcodephp@gmail.com

12 เม.ย. 2555

include กับ require ใช้แบบไหนดี

คนเขียน PHP หลายคนคงงงกับความแตกต่างของฟังก์ชั่นเหล่านี้
  • include
  • inclue_once
  • require
  • require_once
ซึ่งจริงๆแล้ว ฟังก์ชั่นที่ 4 ก็ทำหน้าที่เดียวกันคือ รวมไฟล์อื่นๆ เข้ามาประมวลผลด้วย เหมือนเป็นไฟล์เดียวกัน

เคล็ดลับสำหรับมือใหม่ เราสามารถส่งผ่านตัวแปรจากหน้าหนึ่งไปยังหน้าที่ถูก include เข้ามา รวมถึง ส่งตัวแปรจากหน้าที่ include เข้ามายังหน้าหลักได้ด้วย
<?php
    $a = 10;
    include('path/to/file2.php');
    echo $a + $b;
?>

โค้ดด้านบนเป็นไฟล์หลัก กำหนดตัวแปร $a ไว้ เท่ากับ 10 และ เราจะส่งตัวแปรนี้ไปประมวลผลที่ file2.php ซึ่งถูก include เข้ามา ซึ่งหลังจากประมวลผลไฟล์ file2.php แล้วก็จะนำค่าตัวแปร $a มาบวกกับ ตัวแปร $b ซึ่งถูกกำหนดใน file2.php
<?php
    $a = $a * 2;
    $b = 80;
?>

โค้ดใน file2.php ครับ ซึ่งแนวคิดง่ายๆของ include (หรือฟังก์ชั่นอื่นๆ ด้านบน) คือเหมือนประมวลผลด้วยไฟล์เดียวกัน

include และ require แตกต่างกันอย่างไร คำตอบให้ดูที่ชื่อมันเลยครับ ทั้ง 2 คำสั่งแต่ต่างกันแค่ สิ่งที่เกิดขึ้นหากไม่พบไฟล์ที่ต้องการ
  • include แปลว่า รวมเข้าด้วยกัน
  • require แปลว่า ต้องการ

ตามความหมายของชื่อ บอกให้รู้ว่า require สำคัญกว่า include ซึ่ง require หากไม่พบไฟล์ที่ต้องการ PHP จะคืนค่า Error และ หยุดหารทำงาน ซึ่งต่างจาก include หากไม่พบไฟล์ที่ต้องการ มันจะทำแค่แสดงข้อความเตือน แต่มันจะยังถูกประมวลผลต่อไปจนจบ ซึ่งถ้าดูจากผลลัพท์ของมัน หมายความว่า
  • ถ้าไฟล์ที่ต้องการรวม จะขาดเสียมิได้ ถ้าไม่มีการทำงานระบบจะผิดพลาดร้ายแรง ให้ใช้ require เพื่อป้องกันการทำงานต่อ ซึ่งอาจเกิดผลเสียกับระบบ
  •  ถ้าไฟล์ที่ต้องการ เป็นแค่ การทำงานที่ไม่จำเป็น อาจละเสียก้ได้(หรืออาจไม่มีอยู่ในระบบ) ก็ให้ใช้ include

include_once และ require_once มีความหมายเหมือนกับ 2 คำสั่งด้านบน แตกต่างกันตรงที่ คำสั่งที่มี once จะยอมให้มีการรวมไฟล์เข้ามาได้เพียงครั้งเดียวเท่านั้น
ประเด็นเรื่องความเร็ว
include และ require จากการทดสอบ require จะทำงานได้เร็วกว่า include เล็กน้อย ซึ่งตามความเห็นของผม การใช้งานในแง่นี้ ผมแนะนำให้ดูที่จุดประสงค์ของไฟล์ที่ต้องการมากกว่า ส่วน ระหว่างที่มี once กับที่ไม่มี once คำสั่งที่มี once จะประมวลผล ช้ากว่าครับ เนื่องจากคำสั่งที่มี once จะต้องเสียเวลาในการตรวจสอบว่าไฟล์ถูกเรียกใช้งานแล้วหรือยัง ยกตัวอย่างเช่น การโหลด class ขนาดใหญ่
มีอีกประเด็นหนึ่งที่น่าสนใจ คือ หากเราจำเป็นต้อง include ไฟล์ขนาดใหญ่ และมีโอกาศที่จะ include มากกว่า 1 ครั้งแล้ว การใช้คำสั่งที่มี once จะทำงานเร็วกว่านะครับ เนื่องจาก การประมวลผลไฟล์ขนาดใหญ่ อาจใช้เวลามากกว่าการตรวจสอบว่าไฟล์ได้ถูกรวมเข้ามาหรือยัง
คำแนะนำในการเลือกใช้
  • ผมแนะนำว่าเราไม่ควรอกแบบให้มีการ include ไฟล์แต่ละไฟล์เกินกว่า 1 ครั้ง เนื่องจากการ include ไฟล์ในแต่ละครั้ง PHP ยังจะต้องเสียเวลาส่วนหนึ่งไปกับการตรวจสอบ PATH ที่ถูกต้องของไฟล์ก่อนการเรียกใช้เสมอ หากมีความจำเป็นจะต้องใช้หน้าที่ include เพื่อประมวลผล หลายๆครั้ง ผมแนะนำให้สร้างฟังก์ชั่นในหน้าที่ include และ include หน้าเข้ามาก่อนการประมวลผล และทำการเรียกใช้ฟังก์ชั่นหลายๆครั้ง แทนครับ
  • ในการ include ไฟล์ เราควรระบุ PATH ของไฟล์แบบเต็มๆ จะทำให้ PHP ไม่ต้องเสียเวลาในการค้นหาไฟล์ครับ เช่น <?php include('C:\home\website\test.php');?> ซึ่งจะเร็วกว่าการระบุแบบ <?php include('test.php');?>

ไม่มีความคิดเห็น: