รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

include(), include_once(), require() และ require_once() จะเลือกใช้อะไรดี ???

    ใน PHP จะมีฟังก์ชันที่ทำหน้าที่สำหรับนำเข้าไฟล์ (นำไฟลหนึ่งมาเป็นส่วนประกอบของอีกไฟล์หนึ่ง) อยู่หลายฟังก์ชันด้วยกัน แต่ที่มีคนนิยมใช้มากและพบเห็นได้บ่อย (ตามบทความหรือฟ source code ทั่วไป) จะมีอยู่ประมาณ 4 ฟังก์ชัน ซึ่งก็มีหลายคน งงว่าจะเลือกใช้อะไรดี เพราะใช้ ๆ ไปผลลัพธ์มันก็เหมือน ๆ กัน ในบทความนี้เราจะมาฟันธงกันครับว่าควรจะใช้อะไรดี

    ซึ่ง 4 ฟังก์ชันที่ผมพูดถึง ได้แก่
       1.
    include เช่น incude("connect.inc") หรือ include "connect.inc"
       2.
    include_once เช่น include_once("connect.inc") หรือ include_once "connect.inc"
       3.
    require เช่น require("connect.inc") หรือ require "connect.inc"
       4.
    require_once เช่น require("conect.inc") หรือ require_once "connect.inc"


    (***comment สำหรับมือใหม่นิดหนึ่งนะครับ ...ไม่จำกัดว่าต้องเป็นไฟล์นามสกุล *.inc นะครับ
    นามสกุลอะไรก็ได้ หรือจะเป็น url ก็ได้แต่นักเขียนโปรแกรมส่วนมากจะนิยมตั้งเป็น *.inc หรือ *.inc.php เพื่อให้สังเกตได้ง่ายว่าไฟล์นามสกุลแบบนี้จะต้อง ถูกเรียกใช้โดยไฟล์อื่น ประมาณนั้นครับ)

    จะสังเกตเห็นว่ารูปแบบของการเรียกใช้งานไม่ได้ต่างกันเลย แต่ความจริงมันต่างกันครับ แล้วมันต่างกันยังไงละ

    ....ก่อนจะรู้ว่ามันต่างกันยังไงเรามาดูที่ศัพท์ภาษาอังกฤษกันก่อนนะครับ ในชื่อฟังก์ชันทั้ง 4
    ฟังก์ชันนั้นจะมีศัพท์ภาษาอังกฤษหลัก ๆ อยู่ 3 คำคือ "include", "require" และ "once" ลองเปิดโปรแกรม dictionary ที่มีอยู่ ในเครื่องคุณดูสิครับว่าแต่ละคำหมายความว่าอะไร ความหมายที่ได้จะประมาณนี้ครับ
       
    include = รวมถึง, ประกอบด้วย
      
     require = ต้องการ
       
    once = ครั้งเดียว, หนเดียว

    ดูจากคำแปลก็น่าจะรู้แล้วนะครับว่าฟังก์ชันไหนให้ความสำคัญกับไฟล์ที่นำเข้ามามากกว่ากัน
    ....ใช่ครับ require  ฟังก์ชัน require() กับ require_once() จะให้ความสำคัญกับไฟล์ที่นำเข้ามามากกว่า สรุปก็คือ

    ฟังก์ชัน include() กับ include_once() เมื่อใช้แล้ว ถ้ามันไม่เจอไฟล์ตามที่ระบุ มันจะรายงาน error แค่ Warning เท่านั้นแล้วก็ข้ามไปส่วนอื่นต่อได้ จึงนิยมใช้เรียกไฟล์พวกข้อความ หรือ html ธรรมดา เพราะไม่ค่อยจำเป็นเท่าไหร่โปรแกรมยังสามารถข้ามไปทำงานส่วนอื่นต่อได้อีก ยังไม่สมควารต้องหยุด

    ต่างกันกับ
    require() กับ require_once() ซึ่งถ้าไม่เจอไฟล์ตามที่ระบุแล้ว มันจะรายงาน error
    มาเป็น Final error ทันทีแล้วก็จะโปรแกรมก็จะหยุดแค่ตรงนั้น จีงนิยมใช้เรียกไฟล์ที่เก็บฟังก์ชัน, คลาส หรือค่า config ต่าง ๆ ที่มีความจำเป็นมาก เพราะถ้าข้าม

    การเรียกไฟล์ส่วนนี้ไปผลลัพธ์ส่วนอื่นที่ถึงแม้รันออกมาได้ก็ไร้ค่า

    ...มาลองทดสอบกันดูนะครับ คุณลองสร้างไฟล์ php ขึ้นมา 2 ไฟล์ ไฟล์แรกเขียนสคริปต์นี้ลงไป
    ครับ

    <?
       include("abcdefghijk.php"); //หมายถึงชื่อไฟล์ที่ไม่มีอยู่จริงหนะครับ ^^
    ?>


    ไฟล์ที่สองเขียนสคริปต์นี้ลงไปครับ


    <?
       require("hijklmnop.php"); //เป็นชื่อไฟล์ที่ไม่มีอยู่จริงเช่นกันครับ
    ?>


    ลองสังดูความแตกต่างเอาเองนะครับ
    ....อย่าเพิ่งปิดบทความนี้นะครับ ยังไม่จบครับ ^^ ผมยังไม่ได้บอกคุณเลยว่า
    มี once กับ ไม่มี
    once มันแตกต่างกันยังไง มี once กับ ไม่มี once จะรายงาน error เหมือนกันครับตามที่บอกไว้แล้วข้างต้น แต่มันต่างกันตรงที่การเรียกใช้ครับ ขอยก

    ตัวอย่าง
    เป็น
    require ก็แล้วกันนะครับ เช่นในเว็ปเพจหน้าหนึ่งผมใช้ require("test.php") 5 ครั้ง ไฟล์
    test.php ก็จะถูกนำเข้ามาโดยความสำคัญแบบ require ถึง 5 ครั้งเลยครับ แต่ถ้าผมเรียก require_once("test.php") 5 ครั้ง ไฟล์ test.php จะถูกนำเข้ามาโดยความสำคัญแบบ require แค่ครั้งเดียวครับ(ชื่อมันก็บอกอยู่แล้ว - -" ตามความหมายที่อธิบายไว้ข้างต้น)

    เรามาทดสอบตัวอย่างจริงกันเลยดีกว่าครับ ผมขอยกตัวอย่างแค่
    require นะครับเพราะสำคัญ
    มากกว่า ส่วน include นั้นไปลองดูเองนะครับ

    ขั้นแรก ให้คุณสร้างไฟล์ test.php โดยเขียนสคริปต์ดังนี้
    <?
    #test.php
    echo "ถูกนำเข้าครั้งที่ $i <br>";
    ?>

    ขั้นที่สอง สร้างไฟล์ php ขึ้นมาอีก 2 ไฟล์ โดยไฟล์แรกเขียนสคริปต์ดังนี้
    <?
    #require.php
    for($i=1;$i<=5;$i++)
       require("test.php"); //นำเข้าไฟล์ test.php ที่สร้างไว้
    ?>


    ไฟล์ที่สองเขียนสคริปต์ดังนี้
    <?
    #require_once.php
    for($i=1;$i<=5;$i++)
       require_once(
    "test.php"); //นำเข้าไฟล์ test.php ที่สร้างไว้
    ?>


    ลองรันแล้วสังเกตความแตกต่างระหว่างผลลัพธ์จากทั้งสองไฟล์ดูนะครับ หวังว่าคงเข้าใจ

     

บทความที่น่าสนใจ

บทความ ล่าสุด

บทความ ความรู้ด้านไอที, คอมพิวเตอร์ Techonlogy, Gadget, ความรู้เกี่ยวกับคอมพิวเตอร์ กับทาง SoftMelt.com