รับทําเว็บไซต์ รับทํา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 ที่สร้างไว้
    ?>


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