1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
2 Content การ Reuse Code การใช้ฟังก์ชัน require() และ include() ฟังก์ชัน (Function) การคืนค่า (Return) จากฟังก์ชัน ประเภทของการส่งผ่านค่า ขอบเขต (Scope) การเรียกใช้ตัวเอง (Recursion)
3 การ Reuse Code คือการนำเอาโปรแกรม ที่เคยมี การสร้างขึ้นมาก่อน กลับเอามาใช้ ใหม่ เพื่อพัฒนาระบบ เพิ่มความรวดเร็วในการเขียน โปรแกรม ลดค่าใช้จ่ายในการพัฒนา โปรแกรม ลดการสูญเสียพื้นสำหรับจองตัว แปรต่างๆ ลดความผิดพลาดในการเขียน โปรแกรม เพื่อความสะดวกในการปรับปรุง แก้ไขในภายหลัง
4 การใช้ฟังก์ชัน require() และ include() ใช้สำหรับโหลดแฟ้มข้อมูลที่ จัดเก็บ สคริปต์ของ PHP HTML ฟังก์ชัน หรือ Class ที่มีการทำงานเหมือนคำสั่ง #include ของภาษา C ที่มีการทำงานเหมือนคำสั่ง #include ของภาษา C
5 require() เป็นฟังก์ชัน สำหรับโหลด แฟ้มที่นำมาใช้ งาน ในลักษณะ ของ Reuse Code require( "filename" ); รูปแบบfilename ชื่อของ แฟ้มข้อมูล ที่นิสิต ต้องการ เรียกใช้
6 require_once() เป็นฟังก์ชัน สำหรับโหลด แฟ้มที่นำมาใช้ งาน ในลักษณะ ของ Reuse Code require_once( "filename" ); รูปแบบfilename ชื่อของ แฟ้มข้อมูล ที่นิสิต ต้องการ เรียกใช้
7 require() และ require_once() use function from f1.php and f2.php require("f1.php") require("f2.php") use function from f1.php and f2.php require_once("f1.php") require_once("f2.php")
8 f1.php and f2.php <?php // f1.php function factorial1($count){ $result = "1"; $result = "1"; for($i=2; $i<=$count; $i++) for($i=2; $i<=$count; $i++) $result = $result. " * ". $i; return $result; } // end function ?> <?php // f2.php function factorial2($count){ $result = 1; $result = 1; for($i=1; $i<=$count; $i++) for($i=1; $i<=$count; $i++) $result = $result * $i; $result = $result * $i; return $result; return $result; } // end function ?>
9 <?php require("f1.php"); require("f2.php"); echo "FACTORIAL OF 5"; echo "IS "; echo factorial1(5); echo " = "; echo factorial2(5); echo " "; ?><?php require_once("f1.php"); require_once("f2.php"); echo "FACTORIAL OF 5"; echo "IS "; echo factorial1(5); echo " = "; echo factorial2(5); echo " "; ?>
10 include() เป็นฟังก์ชัน สำหรับโหลดแฟ้ม ที่นำมาใช้งาน ใน ลักษณะของ Reuse Code เหมือน require() และ require_once() include( "filename" ); รูปแบบfilename ชื่อของ แฟ้มข้อมูล ที่นิสิต ต้องการ เรียกใช้
11 ฟังก์ชัน (Function) คือ ชุดคำสั่ง (Routine) ที่ใช้ในการ ทำงานอย่างใดอย่างหนึ่ง โดย สามารถส่งค่าผลลัพธ์หลังจากการ ทำงานออกมาได้ โดยที่การทำงาน ของฟังก์ชันจะมีคำศัพท์ที่ เกี่ยวข้องคือ Argument ตัวแปรที่เราใช้ส่งค่าไปให้ ฟังก์ชัน Parameter ตัวแปรที่ฟังก์ชันใช้รับค่าที่ ส่งมา
12 ฟังก์ชัน (Function) // argument ( ส่งค่าไปประมวลผล : เรียกใช้ งานฟังก์ชัน ) func_name(argument1,…, argumentN); // parameter ( รับค่า ) function func_name(para1,…, paraN){ ชุดคำสั่งต่างๆ ที่ฟังก์ชัน ต้องประมวลผล ชุดคำสั่งต่างๆ ที่ฟังก์ชัน ต้องประมวลผล return value // ถ้าต้องการส่งค่ากลับ return value // ถ้าต้องการส่งค่ากลับ}
13 User-Defined Function ในการใช้งาน ฟังก์ชัน ผู้ใช้ สามารถสร้าง ฟังก์ชันขึ้นมา ใช้งานได้เอง function func_name( para1,…, paraN ); รูปแบบfunc_name ชื่อของ ฟังก์ชัน para1,…,paraN ค่าตัว แปรที่เรา ส่งมาให้ ฟังก์ชัน ประมวล ผล
14 User-Defined Function การตั้งชื่อฟังก์ชัน ควรตั้งชื่อให้สื่อ ความหมาย และมีความสัมพันธ์กับ งานที่ฟังก์ชันนั้นทำ โดยมีกฎการ ตั้งชื่อดังนี้ ชื่อของฟังก์ชันต้องไม่ซ้ำกัน ชื่อของฟังก์ชันสามารถเป็น ตัวอักษร ตัวเลข หรือ underscore ( _ ) ชื่อของฟังก์ชันต้องไม่ขึ้นต้นด้วย ตัวเลข
15 การคืนค่า (Return) จาก ฟังก์ชัน เมื่อสิ้นสุดการทำงานของฟังก์ชัน เราสามารถเลือกที่จะส่งค่าผลลัพธ์ ของการประมวลผลกลับออกมา จากฟังก์ชันได้ หรืออาจจะไม่ส่งค่า กลับเลยก็ได้ สามารถใช้คำสั่ง return ในการส่งค่ากลับ ดังแสดงใน ตัวอย่างหน้าถัดไป
16 Example: Function <?php function multiple($x, $y){ function multiple($x, $y){ $result = $x * $y; $result = $x * $y; return $result; return $result; } echo "TESTING FUNCTION = ". multiple(10, 5); echo "TESTING FUNCTION = ". multiple(10, 5); echo phpinfo(); // SYSTEM FUNCTION echo phpinfo(); // SYSTEM FUNCTION?>
17 ประเภทของการส่งผ่านค่า การส่งผ่านค่าตัวแปรให้กับฟังก์ชัน มี 2 แบบ คือ การส่งผ่านค่า โดยใช้ค่าของข้อมูล (Pass by Value) การส่งผ่านค่า โดยใช้การอ้างอิง (Pass by Reference)
18 Pass by Value <?php function increment( $x ){ function increment( $x ){ $x = $x +10; $x = $x +10; } $data = 10; $data = 10; echo "data before pass by value =". $data ; echo "data before pass by value =". $data ; echo " "; echo " "; increment($data); increment($data); echo "data after pass by value =". $data; echo "data after pass by value =". $data;?> data before pass by value =10 data after pass by value =10
19 Pass by Reference <?php function increment( &$x ){ function increment( &$x ){ $x = $x +10; $x = $x +10; } $data = 10; $data = 10; echo "data before pass by value =". $data ; echo "data before pass by value =". $data ; echo " "; echo " "; increment($data); increment($data); echo "data after pass by value =". $data; echo "data after pass by value =". $data;?> data before pass by value =10 data after pass by value =20
20 ขอบเขต (Scope) ขอบเขตในการใช้งานตัวแปรของ ภาษา PHP มีหลักการกำหนด ขอบเขตดังนี้ local variable: ค่าตัวแปรมีผลเฉพาะใน ฟังก์ชันที่เรียกใช้งาน global variable: ค่าตัวแปรมีผลเฉพาะ นอกฟังก์ชัน
21 Example: Scope <?php $x = 10;// global variable $x = 10;// global variable function increment($x){ function increment($x){ $x = $x +10;// local variable $x = $x +10;// local variable echo "local variable x = ". $x; echo "local variable x = ". $x; echo " "; echo " "; } // END FUNCTION } // END FUNCTION increment(5); increment(5); echo "global variable x =". $x; echo "global variable x =". $x;?> local variable x = 15 global variable x =10
22 การเรียกใช้ตัวเอง (Recursion) ในการใช้งานฟังก์ชัน นิสิต สามารถเรียกใช้งานฟังก์ชันเดิม ซ้ำๆ โดยนิสิตต้องระมัดระวัง เงื่อนไข เนื่องจากอาจเกิดการวน ซ้ำไม่หยุด (Infinite Loop)
23 Example: Recursion <?php function factorial($x){ function factorial($x){ if($x>1) if($x>1) return $x * factorial($x-1); // RECURSION return $x * factorial($x-1); // RECURSION else else return 1; return 1; } // END FUNCTION } // END FUNCTION echo "5! = ". factorial(5) ; echo "5! = ". factorial(5) ;?> 5! = 120