ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยLamai Ho'thai ได้เปลี่ยน 10 ปีที่แล้ว
1
PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)
2
ฟังก์ชั่น (Functions)
ฟังก์ชั่น (Functions) หมายถึง กลุ่มของคำสั่งที่ถูกนำมารวบรวมไว้ด้วยกัน เพื่อให้สามารถเรียกใช้ได้อย่างสะดวกและเป็นระบบ ฟังก์ชั่นที่ผู้เขียนโปรแกรมสร้างขึ้นมาใช้เองเรียกว่า User-defined functions การส่งผ่านค่าให้กับฟังก์ชั่นมี 2 วิธี ส่งผ่านอาร์กิวเมนต์แบบ pass by value ส่งผ่านอาร์กิวเมนต์แบบ pass by reference
3
การประกาศฟังก์ชั่น (Functions)
รูปแบบการประกาศฟังก์ชั่น อาร์กิวเมนต์ เป็นตัวแปรชนิดต่าง ๆ เราใช้อาร์กิวเมนต์ในการรับข้อมูลเข้ามาประมวล และส่งข้อมูลกลับออกไป (สำหรับอาร์กิวเมนต์ที่ถูกกำหนดให้ส่งผ่านแบบ by reference) function ชื่อฟังก์ชั่น ([อาร์กิวเมนต์1, อาร์กิวเมนต์2, ...]) { คำสั่ง; ……; }
4
ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์
<html> <head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function carea($dia, $mode) { if ($mode == 0) { $area = (22/28) * $dia * $dia; //สูตรการคำนวณหาพื้นที่ของรูปวงกลม return $area; } elseif ($mode == 1) { $area = $dia * $dia; //สูตรการคำนวณหาพื้นที่ของรูปสี่เหลี่ยมจัตุรัส } //จบ elseif } //จบฟังก์ชั่น ex12_01.php
5
ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์
$diameter = 7; echo "วงกลมเส้นผ่านศูนย์กลางยาว $diameter หน่วย มีพื้นที่ = " carea($diameter, 0) . " ตารางหน่วย<br />\n"; echo "สี่เหลี่ยมจัตุรัสยาวด้านละ $diameter หน่วย มีพื้นที่ = " . carea($diameter, 1) . " ตารางหน่วย<br />\n"; ?> </body> </html> ต่อ $mode = 0 แสดงว่าให้คำนวณหาพื้นที่ วงกลม $mode = 1 แสดงว่าให้คำนวณหาพื้นที่ สี่เหลี่ยมจตุรัส
6
ตัวอย่าง : ฟังก์ชั่นที่ไม่รับอาร์กิวเมนต์
<html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function growname() { $myname = "SOM"; $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); //$newname = $newname . substr($myname,$i,1); echo $newname . "<br />\n"; } //จบ for } //จบฟังก์ชั่น growname(); ?> </body></html> ex12_02.php
7
ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์
<html> <head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function growname($myname) { $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); echo $newname . "<br />\n"; } //จบ for } //จบฟังก์ชั่น growname("SOM"); growname("Song"); ?> </body></html> ex12_03.php
8
การกำหนดค่า default ของอาร์กิวเมนต์
หากมีการเรียกใช้ฟังก์ชั่นโดยไม่กำหนดค่าให้กับ อาร์กิวเมนต์ PHP จะนำค่า default มากำหนดให้กับอาร์กิวเมนต์นั้น การกำหนดค่า default ให้กับอาร์กิวเมนต์จะต้องทำในส่วนของการประกาศฟังก์ชั่น
9
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php // อาร์กิวเมนต์ $myname มีค่าดีฟอลต์คือ "Test" ดังนั้นถ้าเราเรียกใช้ฟังก์ชั่นนี้ //โดยไม่ส่งค่าอาร์กิวเมนต์มา ค่า "Test" ก็จะถูกนำมาประมวลผล function growname($myname = "Test") { $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); echo $newname . "<br />\n"; } growname("SOM"); growname(); ?> </body></html> ex12_04.php
10
การส่งค่าจากฟังก์ชั่น
เราสามารถสร้างฟังก์ชั่นที่ส่งค่ากลับคืนมาได้ โดยใช้คำสั่ง return ภายในฟังก์ชั่นกับอาร์กิวเมนต์จะต้องทำในส่วนของการประกาศฟังก์ชั่น การเรียกใช้ฟังก์ชั่นที่มีการส่งค่ากลับคืนมานั้น เราสามารถมองทั้งฟังก์ชั่นเป็นเสมือนตัวแปรตัวหนึ่งที่เก็บค่านั้นไว้ อาจจะสร้างตัวแปรมารับค่าจากฟังก์ชั่นก่อนแล้วจึงนำตัวแปรนั้นไปใช้งานอีกทีก็ได้
11
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function carea($dia) { //สูตรการคำนวณหาพื้นที่ของรูปวงกลม $area = (22/28) * $dia * $dia; return $area; } $diameter = 7; $newval = carea($diameter); //สร้างตัวแปรขึ้นมารับค่าจากฟังก์ชั่น echo "วงกลมเส้นผ่านศูนย์กลางยาว $diameter หน่วย "; echo "มีพื้นที่ = $newval ตารางหน่วย<br />\n"; ?> </body></html> ex12_05.php
12
ขอบเขตของตัวแปร (Variable scope)
ตัวแปรที่ประกาศไว้ในฟังก์ชั่นใด จะเป็นที่รู้จักและเรียกใช้ได้เฉพาะในฟังก์ชั่นนั้น ถึงแม้ว่าจะมีการประกาศตัวแปรชื่อเดียวกันไว้ทั้งในและนอกฟังก์ชั่น ก็ถือว่าเป็นตัวแปรคนละตัวและมีตำแหน่งในหน่วยความจำคนละที่กัน
13
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php //สร้างตัวแปร $myvar เป็นตัวแปรชนิดสตริงไว้นอกฟังก์ชั่น $myvar = "TAMSAILOM"; function testvar() { //สร้างตัวแปร $myvar เป็นตัวแปรชนิดจำนวนทศนิยมไว้ในฟังก์ชั่น $myvar = ; return $myvar; } echo "ตัวแปร \$myvar มีค่า $myvar<br />\n"; echo "ตัวแปร \$myvar ในฟังก์ชั่นมีค่า " . testvar() . "<br />\n"; echo "ตัวแปร \$myvar หลังจากเรียกฟังก์ชั่นมีค่า $myvar<br />\n"; ?> </body></html> ex12_06.php
14
ขอบเขตของตัวแปร (Variable scope) การใช้คำสั่ง global
รูปแบบ global var_name1, var_name2, var_name3, ...;
15
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $myvar = 500; function TestVar() { //ประกาศให้ PHP รู้ว่าต้องการอ้างถึงตัวแปร $myvar ที่อยู่นอกฟังก์ชั่น global $myvar; $myvar++; } echo "ค่าของ \$myvar ก่อนเรียกฟังก์ชั่น : $myvar<br />\n"; TestVar(); echo "ค่าของ \$myvar หลังจากเรียกฟังก์ชั่น : $myvar<br />\n"; ?> </body></html> ex12_07.php
16
ธรรมชาติของตัวแปรในฟังก์ชั่น ของ PHP
โดยปกติ ตัวแปรที่ประกาศไว้ในฟังก์ชั่นจะถูกทำลายไปหลังจากการทำงานของฟังก์ชั่นนั้น ๆ สิ้นสุดลง และจะถูกสร้างขึ้นมาใหม่เมื่อเรียกฟังก์ชั่นนั้นอีกครั้ง
17
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function testloop() { $var = 150; $str = "A"; echo "ค่าของ \$var คือ $var, "; echo "ค่าของ \$str คือ $str<hr />\n"; $var -= 10; //ลดค่าของ $var ทีละ 10 $str++; //เพิ่มค่าของ $str ทีละ 1 } //เรียกใช้ฟังก์ชั่น testloop() จำนวน 4 ครั้ง for ($i=0; $i<4; $i++) { testloop(); ?> </body></html> ex12_08.php
18
ตัวแปรแบบ static ถ้าหากต้องการให้ฟังก์ชั่นรักษาค่าของตัวแปรไว้หลังจากที่จบการทำงานแล้ว จะต้องกำหนดให้ตัวแปรนั้น ๆ เป็นตัวแปรแบบ static โดยประกาศด้วยคำว่า static ไว้หน้าตัวแปร
19
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function testloop() { static $var = 150; static $str = "A"; echo "ค่าของ \$var คือ $var, "; echo "ค่าของ \$str คือ $str<hr />\n"; $var -= 10; //ลดค่าของตัวแปร $var ทีละ 10 $str++; //เพิ่มค่าของตัวแปร $str ทีละ 1 } //เรียกใช้ฟังก์ชั่น testloop() จำนวน 4 ครั้ง for ($i=0; $i<4; $i++) { testloop(); ?> </body></html> ex12_09.php
20
รูปแบบการส่งอาร์กิวเมนต์
การส่งอาร์กิวเมนต์มีอยู่ด้วยกัน 2 แบบ คือ ส่งผ่านด้วยค่าของตัวแปร (pass by value) ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ (pass by reference)
21
รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยค่าของตัวแปร
รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยค่าของตัวแปร การส่งผ่านวิธีนี้ PHP จะ Copy ค่าจากตัวแปรนอกฟังก์ชั่นส่งค่าไปให้กับตัวแปรภายในฟังก์ชั่น การเปลี่ยนแปลงค่าของตัวแปรภายในฟังก์ชั่นจะไม่มีผลกระทบกับตัวแปรที่อยู่ภายนอก โดยปกติการส่งอาร์กิวเมนต์ให้กับฟังก์ชั่นจะใช้วิธีแบบนี้
22
ตัวอย่าง : <html><head> ex12_10.php
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $var = 150; $str = "A"; function sendVal($newvar, $newstr) { $newvar += 100; ++$newstr; echo "ค่าของ \$newvar คือ " . $newvar . "<br />\n"; echo "ค่าของ \$newstr คือ " . $newstr . "<hr />\n"; } ?> ค่าของ $var (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $var ; ?> <br /> ค่าของ $str (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $str ; ?> <hr /> <?php sendVal($var, $str) ; //เรียกฟังก์ชั่น ?> ค่าของ $var (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $var ; ?> <br /> ค่าของ $str (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $str ; ?> <hr /> </body></html> ex12_10.php
23
รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ
รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ เป็นการส่งค่าโดยการอ้างอิงตำแหน่งในหน่วยความจำ ซึ่งจะทำให้การเปลี่ยนแปลงค่าของตัวแปรในฟังก์ชั่น มีผลกับค่าตัวแปรภายนอกฟังก์ชั่นด้วย การส่งค่าแบบนี้ให้กำหนดเครื่องหมาย & ไว้หน้า ตัวแปร
24
ตัวอย่าง : <html><head>
<title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $var = 150; $str = "A"; function sendVal($newvar, $newstr) { $newvar += 100; ++$newstr; echo "ค่าของ \$newvar คือ " . $newvar . "<br />\n"; echo "ค่าของ \$newstr คือ " . $newstr . "<hr />\n"; } ?> ค่าของ $var (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $var; ?> <br /> ค่าของ $str (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $str; ?> <hr /> <?php sendVal(&$var, &$str); //เรียกฟังก์ชั่น ?> ค่าของ $var (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $var; ?> <br /> ค่าของ $str (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $str; ?> <hr /> </body></html> ex12_11.php
25
การแทรกไฟล์อื่นเข้าไฟล์หลัก
ในบางกรณีเราสามารถแยกไฟล์ html หรือไฟล์ php หรือไฟล์ที่เก็บฟังก์ชันที่เราสร้างขึ้น ที่ใช้บ่อย ๆ ไปเก็บไว้อีกไฟล์หนึ่ง แล้วค่อยแทรกเข้ามาในไฟล์หลักเมื่อต้องการใช้งาน ซึ่งเราสามารถทำได้โดยใช้ฟังก์ชันเหล่านี้ include include_once require require_once
26
include("/filepath/filename")
เป็นการแทรกโดยถ้าไม่มีไฟล์ที่ระบุจะมีการแจ้งเตือน แต่จะไม่หยุดการทำงาน รูปแบบ include("/filepath/filename")
27
require("/filepath/filename")
เป็นการแทรกโดยถ้าไม่มีไฟล์ที่ระบุจะมีการแจ้งเตือน และหยุดการทำงานโดยทันที รูปแบบ require("/filepath/filename")
28
include_once("/filepath/filename")
เป็นการแทรกโดยอนุญาตให้แทรกได้เพียงแค่ครั้งเดียวเท่านั้น รูปแบบ include_once("/filepath/filename")
29
require_once("/filepath/filename")
เป็นการแทรกโดยอนุญาตให้แทรกได้เพียงแค่ครั้งเดียวเช่นกัน รูปแบบ require_once("/filepath/filename")
30
ตัวอย่าง : <?php echo "Hello World!!!!<br />"; ?> <?php
ex12_12.php <?php include("ex12_12.php"); //require("ex12_12.php"); //include_once("ex12_12.php"); //require_once("ex12_12.php"); ?> ex12_13.php
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.