7.1 การประกาศฟังก์ชัน
ก่อนที่เราจะใช้ฟังก์ชันใดๆ เราจะสร้างฟังก์ชันขั้นก่อน หลังจากนั้นค่อยเรียกฟังก์ชันนั้นเมื่อต้องการใช้งาน ซึ่งการสร้างฟังก์นี้เราอาจจะเรียกว่าเป็นการประกาศฟังก์ชัน โดยรูปแบบของการประกาศฟังก์ชันในภาษา PHP เป็นดังนี้
ก่อนที่เราจะใช้ฟังก์ชันใดๆ เราจะสร้างฟังก์ชันขั้นก่อน หลังจากนั้นค่อยเรียกฟังก์ชันนั้นเมื่อต้องการใช้งาน ซึ่งการสร้างฟังก์นี้เราอาจจะเรียกว่าเป็นการประกาศฟังก์ชัน โดยรูปแบบของการประกาศฟังก์ชันในภาษา PHP เป็นดังนี้
รายละเอียดของการประกาศฟังก์ชั่น เป็นดังนี้
ยกตัวอย่างการประกาศฟังก์ชันชื่อว่า asterisk โดยเป็นฟังก์ชันที่ใช้พิมพ์เครื่องหมายดอกจันทร์จำนวน 30 ครั้ง
รายละเอียดของฟังก์ชันนี้เป็น ดังนี้
7.2 การใช้ฟังก์ชันโดยไม่มีการส่งผ่านค่า
หลังจากประกาศฟังก์ชันแล้ว ในการใช้ฟังก์ชันก็เพียงเรียกชื่อฟังก์ชันนั้น
แต่ให้สังเกตว่าฟังก์ชันที่ จะเรียกใช้งานนั้นมีการส่งผ่านค่าหรือไม่
ในกรณีที่ไม่มีการส่งผ่านค่าก็เพียงเรียกชื่อฟังก์ชันตามด้วยเครื่องหมายวงเล็บเปิด-ปิด ตัวอย่างถัดไปจะเรียกใช้ฟังก์ชัน asterisk ที่ได้ประกาศไว้ในหัวข้อที่ผ่านมา
จากโปรแกรมและผลลัพธ์ในโปรแกรมนี้มีการเรียกใช้ฟังก์ชัน asterisk 2ครั้ง คือเรียกใช้งานในตอนเริ่มต้น
และตอนท้ายของผลลัพธ์
โดยที่เราไม่ต้องเสียเวลาเขียนโปรแกรมเพื่อสั่งให้พิมพ์เครื่องหมายดอกจัน จำนวน 30
ครั้งใหม่ เราเพียงเรียกชื่อฟังก์ชันให้ทำงานเท่านั้น
7.3 การใช้งานฟังก์ชันโดยมีการส่งผ่านค่า
เพื่อให้การใช้ฟังก์ชันมีความยืดหยุ่นมากขั้น
ในบางครั้งเราอาจจะสร้างฟังก์ชันในลักษณะของการส่งผ่านค่า
จากตัวอย่างโปรแกรมในหัวข้อที่ผ่านมาถ้าเราต้องให้ฟังก์ชัน asterisk ถ้าเราพิมพ์เครื่องหมายดอกจันจำนวนเท่าไรก็ได้ชั้นอยู่ที่ใช้งานต้องการ
เราจะสามารถปรับปรุงฟังก์ชัน และโปรแกรมในการเรียกใช้งานได้ดังนี้
จากโปรแกรมและผลลัพธ์ข้างต้นนี้ได้ทำการปรับปรุงฟังก์ชัน asterisk โดยเขียนฟังก์ชันในลักษณะที่มีการส่งผ่านค่าให้กับฟังก์ชันซึ่งมีอาร์กิวเมนต์
$no ทำหน้าที่เป็นตัวรับค่าจำนวนที่ต้องการให้พิมพ์เครื่องหมายดอกจัน
ภายในฟังก์ชันก็นำอาร์กิวเมนต์ $mo นี้ไปเข้าเงื่อนไขเพื่อทำซ้ำของคำสั่ง For กำหนดให้ตัวแปร $sign เป็นตัวแปรที่ใช้ต่อสตริงเครื่องหมายดอกจันเท่ากับจำนวนค่าของอาร์กิวเมนต์
7.4 การคืนค่ากลับของฟังก์ชัน
ในการใช้งานฟังก์ชันนอกจากเราจะสามารถส่งผ่านใดๆ
ไปประมวลผลภายในฟังก์ชันได้แล้ว เรายังสามารถคืนค่าใดๆ
กลับมายังส่วนที่เรียกใช้งานฟังก์ชันได้ โดยใช้ฟังก์ชัน return ตามด้วยค่าที่ต้องการคืนกลับและค่าที่คืนกลับจะถูกแทนที่ในตำแหน่งที่เรียกใช้ฟังก์ชัน
7.5 ประเภทของตัวแปร และขอบเขตของตัวแปร
ในการใช้งานฟังก์ชันเราจะเห็นว่ามีการใช้งานตัวแปรภายในฟังก์ชัน
และบางครั้งชื่อตัวแปรที่ใช้ภายในฟังก์ชันบังเอิญมีชื่อเดียวกับชื่อตัวแปรที่ใช้อยู่ภายนอกฟังก์ชัน
ในกรณีนี้ชื่อตัวแปรนี้เราจะถือว่าเป็นตัวแปรตัวเดียวกันหรือไม่
ในการตอบคำถามนี้เราจะต้องทำความรู้จักประเภทของตัวแปรซึ่งแบ่งออกเป็น 2 ประเภท
คือตัวแปรประเภท Local และ Global
ตัวแปร local คือ ตัวแปรที่มีขอบเขตการใช้งานภายในบริเวณใดบริเวณหนึ่งเท่านั้น เช่นมีขอบเขตการใช้งานเฉพาะภายในฟังก์ชันเท่านั้น ถ้ามีตัวแปรที่ใช้งานภายในฟังก์ชัน ปละใช้งานภายนอกเป็นชื่อตัวแปรเดียวกันเราจะถือว่าตัวแปรตัวแปร 2 ตัวนี้ ถือเป็นตัวแปรคนละตัวแปรกัน
ตัวแปร local คือ ตัวแปรที่มีขอบเขตการใช้งานภายในบริเวณใดบริเวณหนึ่งเท่านั้น เช่นมีขอบเขตการใช้งานเฉพาะภายในฟังก์ชันเท่านั้น ถ้ามีตัวแปรที่ใช้งานภายในฟังก์ชัน ปละใช้งานภายนอกเป็นชื่อตัวแปรเดียวกันเราจะถือว่าตัวแปรตัวแปร 2 ตัวนี้ ถือเป็นตัวแปรคนละตัวแปรกัน
ตัวแปร Global คือ
ตัวแปรที่มีขอบเขตการใช้งานทั่วทั้งโปรแกรม
ไม่ว่าจะใช้ตัวแปรประเภทนี้บริเวณใดก็ตามทุกส่วนของโปรแกรมจะรู้จักตัวแปรตัวนี้
ในการประกาศให้ตัวแปรใดเป็นประเภท global เราจะใช้คำสั่ง global วางไว้หน้าชื่อตัวแปรที่ตัวแปรที่ต้องการ
7.6 ประเภทของการส่งผ่านค่า
ในการส่งผ่านค่าใดๆ ไปยังฟังก์ชัน หลังจากภายในฟังก์ชันประมวลผลเสร็จ และมีการเปลี่ยนค่าที่ผ่านเข้ามาเกิดขึ้น ถามว่าพอกลับไปยังส่วนที่ใช้ฟังก์ชันแล้วค่าของตัวแปรที่ส่งผ่านค่า ไปยังฟังก์ชันจะถูกเปลี่ยนไปตามด้วยหรือไม่ คำตอบก็ตอบคือขึ้นอยู่ที่ประเภทของการส่งผ่านค่า โดยการส่งผ่านมีค่า 2 ประเภท ดังนี้
·
การส่งผ่านด้วยค่าของตัวแปร (Pass by value)
การเปลี่ยนแปลงใดๆ ของค่าอาร์กิวเมนต์จะไม่มีผลต่อค่าของตัวแปรที่ส่งผ่านมาไปยังฟังก์ชัน
การส่งผ่านด้วยการอ้างในหน่วยความจำ (Pass by Reference)
การเปลี่ยนแปลงใดๆ ชองค่าอาร์กิวเมนต์
จะมีผลต่อค่าของตัวแปรที่ส่งผ่านค่าไปยังฟังก์ชัน โดยจะใช้สัญลักษณ์ & นำหน้าตัวแปรที่จะส่งผ่านไยังฟังก์ชัน