การสร้างและใช้งานฟังก์ชั่น บทที่ 7 การสร้างและใช้งานฟังก์ชั่น
ตัวอย่าง $d = date(j F Y); echo $d;
การเขียนฟังก์ชั่นใช้งานเอง function ชื่อฟังก์ชั่น ([อาร์กิวเมนต์]) { statement } function say_hello() { echo "Hello PHP<br>"; } say_hello();
ตัวอย่าง function page_header() { echo '<html><head><title>ยินดีต้อนรับทุกท่าน</title></head>'; echo '<body bgcolor="#ffffff">'; } function page_footer() { echo '<hr>ขอบคุณที่เข้ามาเยี่ยมชม'; echo '</body></html>'; $user = “earth"; page_header(); echo "สวัสดีคุณ $user"; page_footer();
การสร้างฟังก์ชั่นที่มีการรับค่าอาร์กิวเมนต์ function page_header($back_color) { echo '<html><head><title>ยินดีต้อนรับทุกท่าน</title></head>'; echo '<body bgcolor="#' . $back_color . '">'; } function page_footer() { echo '<hr>ขอบคุณที่เข้ามาเยี่ยมชม'; echo '</body></html>'; $user = “earth"; page_header("ff88ff"); echo "สวัสดีคุณ $user"; page_footer();
ฟังก์ชั่นที่มีการรับค่าอาร์กิวเมนต์มากกว่า 1 ตัว function page_header($back_color, $title) { echo '<html><head><title>' . $title . '</title></head>'; echo '<body bgcolor="#' . $back_color . '">'; } function page_footer() { echo '<hr>ขอบคุณที่เข้ามาเยี่ยมชม'; echo '</body></html>'; $user = “earth”; page_header("ffff99", "หน้าหลักของเว็บไซท์"); echo "สวัสดีคุณ $user"; page_footer();
รูปแบบการส่งค่าอาร์กิวเมนต์ 1. pass-by-value 2. pass-by-reference
ตัวอย่าง pass-by-value function Test($a) { $a++; } $value = 10; echo "ค่าของ \$value ก่อนเรียกฟังก์ชั่น Test = $value<br>"; Test($value); echo "ค่าของ \$value หลังจากเรียกฟังก์ชั่น Test = $value<br>"; ค่าของ $value ก่อนเรียกฟังก์ชั่น Test = 10 ค่าของ $value หลังจากเรียกฟังก์ชั่น Test = 10
ตัวอย่าง pass-by-reference function Test(&$a) { $a++; } $value = 10; echo "ค่าของ \$value ก่อนเรียกฟังก์ชั่น Test = $value<br>"; Test($value); echo "ค่าของ \$value หลังจากเรียกฟังก์ชั่น Test = $value<br>"; ค่าของ $value ก่อนเรียกฟังก์ชั่น Test = 10 ค่าของ $value หลังจากเรียกฟังก์ชั่น Test = 11
ฟังก์ชั่นที่มีการคืนค่ากลับ function add_tax($amount) { $total = $amount * 1.07; return $total; } $price = 880.00; echo "ราคาไม่รวมภาษี: $price บาท<br>"; echo "ราคารวมภาษีแล้ว: " . add_tax($price) . " บาท<br>"; ราคาไม่รวมภาษี: 880 บาท ราคารวมภาษีแล้ว: 941.6 บาท
ขอบเขตของตัวแปร ง่ายๆ ตัวแปรอยู่ในฟังก์ชั่น ก็ใช้งานในฟังก์ชั่นนั้นเท่านั้น ถ้าอยู่ข้างนอกก็ใช้งานข้างนอกเท่านั้น 1. Local Variable (ภายในฟังก์ชั่น) 2. Global Variable (ภายนอกฟังก์ชั่น)
ตัวอย่าง function display_value() { echo $value; } $value = 125;
ตัวอย่าง คำสั่ง global function sum() { global $a, $b; echo "\$a = $a, \$b = $b<br>"; $b = $a + $b; } $a = 1; $b = 2; sum(); echo "หลังจากเรียกฟังก์ชั่น sum แล้ว \$b = $b<br>"; $a = 1, $b = 2 หลังจากเรียกฟังก์ชั่น sum แล้ว $b = 3
ตัวอย่าง ตัวแปรสแตติก(static) 0 0 0 function Test() { static $a = 0; echo "$a<br>"; $a++; } Test(); 0 1 2
ตัวแปรแบบ Superglobal $GLOBALS $_FILES (บทที่ 17) $_SERVER (บทที่ 26) $_ENV $_GET (บทที่ 14) $_REQUEST $_POST (บทที่ 14) $_SESSION (บทที่ 24) $_COOKIE (บทที่ 24) $_ENV เก็บค่าสภาพแวดล้อมที่ PHP ทำงานอยู่ $_REQUEST เก็บค่า $_GET, $_POST, $_COOKIE
ตัวอย่าง Superglobal $text = "Hello PHP"; test(); function test() { echo $GLOBALS["text"] . "<br>"; echo $_GET["var"]; Hello PHP ลองเพิ่ม superglobal.php?var=ทดสอบ เข้าไปที่ address
งาน 1. lab07_1.php เขียนฟังก์ชั่น คืนค่าชื่อเดือน ตามเลขเดือน(โดยใช้ if…else) เช่น กำหนดค่า 12 จะพิมพ์คำว่า ธันวาคม หรือ กำหนดค่า 3 จะพิมพ์คำว่า มีนาคม