เริ่มต้นด้วย PHP
PHP เป็นภาษาตัวแปลสคริปต์ หมายความว่า language engine เรียกใช้สคริปต์ที่เขียนขึ้นโดยไม่มีขั้นตอนกลางในการคอมไพล์ หรือไปเป็นรูปแบบไบนารี สคริปต์ส่วนใหญ่ที่ใช้สร้างโปรแกรมประยุกต์เว็บอยู่ในที่เดียวกับไฟล์ HTML ตามปกติไฟล์เก็บสคริปต์จะเก็บเป็นนามสกุล .php ถึงแม้ว่าบุคคลทั่วไปจะใช้นามสกุลเก่าคือ .php3 และ .phtml พื้นที่เก็บไฟล์เหล่านี้จะขึ้นกับการตั้งค่าคอนฟิกให้แม่ข่ายเว็บส่งผ่านไฟล์เหล่านี้ไปยังตัวแปร PHP พื้นที่จัดเก็บไฟล์หรือเอกสารนี้ได้รับอ้างถึงในฐานะ document root
การใช้ PHP TagPHP Tag ตามตัวอย่าง เริ่มต้นด้วย <? และปิดด้วย ?> คล้ายกับ HTML tag เพราะเริ่มต้นด้วยเครื่องหมายน้อยกว่า (<) และปิดด้วยเครื่องหมายมากกว่า (>) สัญลักษณ์เหล่านี้ เรียกว่า PHP tag ที่บอกแม่ข่ายเว็บการเริ่มต้นและสิ้นสุดคำสั่ง PHP ข้อความระหว่าง tag จะได้รับการแปลในฐานะ PHP ข้อความภายนอก tag เหล่านี้ได้รับการปฏิบัติเหมือน HTML ปกติ PHP tag ยอมให้หลีกจาก HTMLรูปแบบ PHP tagรูปแบบ PHP tag มี 4 แบบ แต่ละแบบของคำสั่งอย่างเหมือนกันรูปแบบย่อ (Short style) <? echo "<h1>พูนพนา</h1>";?> รูปแบบนี้เป็นรูปแบบง่ายที่สุดและเป็นไปตามมาตรฐานการประมวลผล SGML (Standard Generalized Markup Language) การใช้ tag ประเภทนี้ต้องให้ใช้ short tag ในไฟล์คอนฟิก php.ini ที่คำสั่ง short_open_tag ให้เป็น enable แต่ไม่แนะนำเนื่องจากไม่เป็นไปตามมาตรฐาน XHTML และมาตรฐานส่วนขยายเช่น PEAR รูปแบบ XML <?php echo "<h1>พูนพนา</h1>";?> tag รูปแบบนี้สามารถใช้กับเอกสาร XML (Extensible Markup Language) ถ้าวางแผนให้ทำงานกับ XML ต้องใช้รูปแบบนี้ รูปแบบ SCRIPT < SCRIPT LANGUAGE='php'> echo "<h1>พูนพนา</h1>"; </SCRIPT> tag รูปแบบนี้ ยาวที่สุดและอาจจะคุ้นเคย ถ้าเคยใช้ JavaScript หรือ VBScript รูปแบบ ASP <% echo "<h1>พูนพนา</h1>"; %> tag รูปแบบนี้เหมือนกับ Active Server Pages (ASP) สามารถใช้ได้ ถ้าตั้งค่าคอนฟิกคำสั่ง asp_tags ให้เป็น enable ประโยคคำสั่ง PHPประโยคคำสั่ง PHP ใช้บอกตัวแปล PHP ให้ทำงาน โดยให้อยู่ระหว่าง tag เปิดและปิดตัวอย่างนี้ใช้ประโยคคำสั่งแบบหนึ่ง echo "<p>พูนพนา</p>"; คำสั่ง echo ตามตัวอย่างเป็นการพิมพ์ข้อมูลเมื่อส่งไปที่ browser สามารถมองเห็นผลลัพธ์ของข้อความ "พูนพนา" ปรากฎใน browser ที่ท้ายประโยคคำสั่ง echo มี semicolon(;) เครื่องหมายนี้ใช้แยกประโยคคำสั่งใน PHP เหมือนกับจุด (.) ที่ใช้แยกประโยคในภาษาอังกฤษ ถ้าเคยเขียนโปรแกรมด้วย C หรือ Java จะมีความคุ้นเคยกับการใช้ semicolon Whitespaceตัวอักษรช่องว่าง เช่น บรรทัดใหม่ (carriage returns), space และ tab รู้จักในชื่อ whitespace ตัวอักษรนี้ไม่ได้รับความสนใจจาก PHP และ HTML ให้พิจารณา 2 คำสั่ง HTML<h1> พูนพนา ยินดีต้อนรับ </h1> <p> วันนี้ ท่านต้องการซื้อสินค้าอะไร? </p> และ <h1> พูนพนา ยินดีต้อนรับ </h1> <p>วันนี้ ท่านต้องการซื้อสินค้าอะไร? </p> คำสั่ง HTML 2 ชุด สร้างผลลัพธ์เหมือนกัน เพราะคำสั่งนี้ปรากฎใน browser อย่างไรก็ตามสามารถใช้ whitespace ใน HTML เพื่อทำให้คำสั่ง HTML อ่านได้ง่าย ถึงแม้ว่าไม่ต้องมี whitespace ระหว่างประโยคคำสั่ง PHP แต่ทำให้อ่านได้ ถ้าแยกแต่ละประโยคให้เป็นคนละบรรทัด ตัวอย่างเช่น echo "hello"; echo "world": และ echo "hello"; echo "world"; คำสั่ง 2 ชุดให้ผลลัพธ์เหมือนกัน แต่ชุดแรกอ่านได้ง่ายกว่า CommentComment ในคำสั่ง ทำหน้าที่เป็นหมายเหตุให้กับผู้อ่านคำสั่ง Comment สามารถใช้อธิบายวัตถุประสงค์ของสคริปต์ ทำไมถึงทำแบบนั้น การปรับปรุงครั้งสุดท้ายและอื่น ๆตัวแปล PHP จะไม่สนใจข้อความใน Comment โดยเฉพาะอย่างยิ่ง PHP parser ข้าม Comment ที่เทียบเท่ากับ whitespace PHP สนับสนุนรูปแบบ Comment แบบ C, C++ และ Shell script รูปแบบ C เป็น Comment หลายบรรทัด /* Author: Chaiwat Last Modified: 1 June 2005 This script processes the customer order. */ Comment หลายบรรทัด เริ่มต้นด้วย /* และปิดด้วย */ เหมือนภาษา C Comment 1 บรรทัด สามารถใช้รูปแบบ C++ echo "<h1>พูนพนา</h1>"; // Start printing order หรือ รูปแบบ Shell script echo "<h1>พูนพนา</h1>"; # Start printing order ภาษา PHP
ต่อไปเป็นการทำความรู้จักภาษาเกี่ยวกับการแปลงประเภทข้อมูล ตัวแปรและการควบคุม จากนั้นเรียนรู้เกี่ยวกับ operator และคำสั่งโครงสร้างควบคุมทางตรรกะของภาษาสำหรับการสร้างสคริปต์
ประเภทข้อมูล
การทำงานกับประเภทข้อมูลของ PHP แตกต่างจากภาษาอื่นเล็กน้อย โดย PHP เป็นภาษา richly typed ที่ตัวแปรไม่ต้องมีการประกาศเป็นประเภทข้อมูลเจาะจง เพราะ engine กำหนดประเภทที่ใช้ตามกฎ บางครั้งเรียกสิ่งนี้ว่าประเภทข้อมูลไดนามิคส์
PHP สนับสนุนประเภทข้อมูล
Integer
integer คือจำนวนเต็ม ตามปกติความแม่นยำขึ้นกับระบบปฏิบัติการ ส่วนใหญ่เป็นขนาด 32 บิต ใน PHP ไม่มี unsigned integer ดังนั้นค่ามากที่สุดของจำนวนเต็มคือ 2 พันล้าน เมื่อเกินจำนวนมากที่สุดของ integer ใน PHP จะแปลงไปเป็น float แทนที่จะไปเป็นจำนวนเต็มลบเหมือนภาษาอื่น
<?php
$large = 2147483647;
?>
ผลลัพธ์ คือ
Int(2147483647) float(2147483648)
integer ระบุในคำสั่งเป็นระบบเลขฐาน 8, ฐาน 10 หรือ ฐาน 16 ได้
การหารเลขจำนวนเต็มใน PHP จะไม่ให้ผลลัพธ์เป็นจำนวนเต็ม เช่น นิพจน์
5 / 2 PHP มีผลลัพธ์คือ 2.5 ด้วยประเภทข้อมูล float แทนที่จะเป็นจำนวนเต็ม 2 เหมือนกับภาษาอื่น ถ้าต้องการค่าจำนวนเต็มจากการหาร ต้องมีการแปลงค่าเป็นจำนวนเต็ม หรือใช้ฟังก์ชัน round Float
float คือจำนวนทศนิยมหรือจำนวนจริง มีขนาด 64 บิตด้วยความแม่นยำของทศนิยม 14 ตำแหน่ง PHP ไม่ได้แบ่งออกเป็น single และ double ตามความแม่นยำเหมือนกับภาษาอื่น อย่างไรก็ตาม PHP ยอมรับคีย์เวิร์ด double เพิ่มเติมจาก float ที่มีความหมายตรงกัน
<?php
?>
ข้อควรระวัง สำหรับ float ควรระวังความจำกัดด้านความแม่นยำ การคำนวณที่ต้องการความแม่นยำสูงอาจจะมีปัญหาได้ แต่การประยุกต์ทั่วไปควรจะเพียงพอ
String
string เป็นชุดของตัวอักษร ใน PHP ตัวอักษรมีค่า 8 บิต
ค่า string ระบุได้ 3 วิธี Single Quoted
ข้อความ single quoted เป็นชุดตัวอักษรที่เริ่มต้นและปิดท้ายด้วย single quote(‘)
echo 'ข้อความ single quote';
ในการรวม single quote ภายในข้อความให้วาง backslash (\) ด้านหน้า ที่เรียกว่าตัวอักษร escape
echo 'การแสดง single quote \' '; Double Quoted
ข้อความ double quoted คล้ายกับข้อความ single quoted ยกเว้น ตัวประมวลผลภาษา PHP ตัดสิ่งเหล่านี้เพื่อค้นหาและแทนที่ ชุดตัวอักษร escape และตัวแปร
นอกจากนี้ตัวอักษร escape \" ต้องการแทรก double quote ภายในข้อความ double quoted ต่อไปเป็นชุด escape ที่ PHP รู้จัก
ตาราง 1.2.1 escape
PHP ไม่สนับสนุนตัวอักษร escape อื่น และถ้าไม่ตรงกับชุดตัวอักษรตามตาราง 1.1 จะพิมพ์ backslash และตัวอักษรนั้น
<?php
echo "ข้อความ double quote ";
echo "<br/>"; echo "แสดงผล double quote \" - \" "; echo "<br/>"; echo "แสดงผล double quote \042 - \042 "; echo "<br/>"; echo "แสดงผล backslash และ ก \ก "; echo "<br/>";
?>
Heredoc Notation
วิธีที่ 3 สำหรับข้อความนำส่วนหัวในสคริปต์ PHP คือใช้ไวยากรณ์ heredoc ไวยากรณ์นี้เหมือนกับสคริปต์ PERL และ Bourne Shell ข้อความเริ่มต้นด้วย <<< และ identifier จนกระทั้งสิ้นสุดด้วย identifier วางชิดซ้ายและ semicolon (;)
<?php
echo <<<TITLE
<h1 align="center">แสดงข้อความด้วย Heredoc</h1> <p>การแสดงข้อความด้วย heredoc สามารถทำงานกับข้อความได้สะดวก <br/> การเว้นบรรทัดใช้ br tag <br/> </p>
TITLE;
?>
ห้ามวางเครื่องหมายต่าง เช่น จุด คูณ บวก ติดกับ identifier จะมีผลต่อการกระจายของ PHP
Boolean
boolean เป็นประเภทข้อมูลง่ายที่สุดใน PHP และ แสดงเป็นค่าไบนารี TRUE หรือ FALSE, YES หรือ NO,1 หรือ 0 ค่าของตัวแปร boolean สามารถเป็นได้ทั้ง TRUE หรือ FALSE 2 คีย์เวิร์ดที่ตัวพิมพ์ไม่มีผล
<?php
$bln1 = tREu;
$bln2 = TrUE; $bln3 = fAlsE; $bln4 = FaLSe; ?> Array
array เป็นวิธีความสามารถสูงในการจัดกลุ่มข้อมูลด้วยวิธียืดหยุ่นในการเข้าถึง การใช้ array สามารถใช้เป็นตัวเลขอย่างง่าย หรือการจับคู่อย่างยืดหยุ่นด้วยการเข้าถึงค่าผ่าน คีย์ประเภทหลังเรียกว่า associative array
การประกาศ array ใช้เมธอด array เพื่อการสร้างค่าเริ่มต้นและส่งอ๊อบเจค array ที่เก็บค่าเหล่านี้
<?php
$peripheral = array("Laser Print", "Inkjet", "Modem", "CD-ROM");
$prime = array(1, 2, 3, 5, 7, 11, 13, 17); $mixed = array(234.22, "คอมพิวเตอร์", 45, array(4, 6, 8), TRUE); ?>
ตามค่าเริ่มต้น ค่าภายใน array ได้รับการกำหนดเป็นดัชนีที่เริ่มต้นจาก 0 ในการเพิ่มหน่วยข้อมูลใหม่ด้วยไวยากรณ์นี้
<?php
$peripheral[ ] = "LAN Card"; // หน่วยข้อมูลเพิ่มใหม่ที่ดัชนี 4
$peripheral[ ] = "VGA Card"; // หน่วยข้อมูลเพิ่มใหม่ที่ดัชนี 5 ?>
รวมทั้งสามารถระบุดัชนีของรายการเพิ่มใหม่ ถ้าใหญ่กว่าดัชนีสุดท้ายใน array จะมีช่องว่างลำดับตัวเลข
<?php
$peripheral[45] = "CD Writer"; ?>
การเข้าถึงหน่วยข้อมูลใน array สามารถทำโดยการให้ตัวเลขดัชนีในวงเล็บสี่เหลี่ยม
<?php
echo $peripheral[2]; // พิมพ์ผล Modem ?>
การระบุค่าด้วยข้อความแทนที่ตัวเลขเริ่มต้น การกำหนดระบุคู่ คีย์-ค่า ด้วย => operator เมื่อสร้าง array
<?php
$developer = array("software" => "PHP", "website" => "www.php.net",
"database" => "MySQL", "decription" => "Web Developer"); echo $developer["website"] // พิมพ์ผล www.php.net ?>
array เป็นเครื่องมือที่สำคัญใน PHP ดูเพิ่มเติมได้ในบทที่ 4 "การทำงานกับ Array"
Object
เมื่อ PHP สนับบสนุน object-oriented programming ในเวอร์ชันนี้มีการปรับปรุงและบางสิ่งอาจจะมากกว่าภาษาอื่น โดยย่อ object-oriented programming คือการใช้ประเภทข้อมูลใหม่ (เรียกว่า “object” หรือ “class”) ดังนั้นแทนที่การใช้ชุดของฟังก์ชัน แต่สามารถใช้เมธอดและตัวแปรกับข้อมูลโดยตรง ดูเพิ่มเติมบทที่ 7 “Object Oriented Programming”
การเข้าถึงตัวแปรหรือเมธอดบนอ๊อบเจค ใช้ -> operator ใน PHP ถ้ามี Rectangular class อ่านค่าความกว้าง (width) ความยาว (length) และเมธอดคำนวณพื้นที่ คำสั่งสามารถเขียนได้ดังนี้
<?php
$shape = new Rectangular ();
$shape->width = 20; $shape->length = 30; echo "พื้นที่สี่เหลี่ยม คือ: ".$shape->calculateArea();
?>
Variable Expansion
ตามที่ได้กล่าวถึงข้อความ double quoted และ heredoc ใน PHP สามารถเก็บการอ้างอิงตัวแปรด้วยเครื่องหมาย $ และ engine จะทราบว่าต้องทำอะไร
Variable Expansion ใน PHP เป็นส่วนการทำงานความสามารถสูงที่ให้ด้านความเร็วและการผสมเนื้อหากับโปรแกรม มี 2 วิธีในการใช้ส่วนการทำงานนี้คือ แบบง่ายและแบบซับซ้อน แบบแรกสำหรับการตัวแปร ค่า array หรือคุณสมบัติอ๊อบเจค ขณะที่แบบหลังสำหรับส่วนขยายแม่นยำมากกว่า
ตัวอย่างแบบง่าย <?php
$type = "simple";
echo "นี่เป็นตัวอย่างของส่วนขยาย '$type' "; $type = array("แบบง่าย", "แบบซับซ้อน"); echo<<<THE_END
THE_END;
?>
เมื่อ PHP processor เห็น $ ในข้อความ double quoted หรือ heredoc จะอ่านตัวอักษรทั้งหมดจนสิ้นสุดชื่อตัวแปร, ดัชนีของ array หรือคุณสมบัติอ๊อบเจค จากนั้นจะประเมินผลลัพธ์และวางค่าในข้อความผลลัพธ์
ตามตัวอย่าง ถ้าไม่ใส่ single quoted (‘) ล้อมตัวแปร $type ไว้ PHP จะแสดงผลลัพธ์เป็นความผิดพลาด
การแก้ปัญหานี้สามารถใช้ส่วนขยายตัวแปรแบบซับซ้อน การใช้ให้หุ้มส่วนขยายด้วยวงเล็บปีก { } ในคำสั่ง PHP processor มองหาวงเล็บปีกกาทันทีต่อจาก $ ที่ระบุแหล่งส่วนขยายตัวแปร กรณีอื่นแสดงผลวงเล็บปีกและสิ่งที่ติดตามมา
<?php $hour = 16;
MSG;
?>
ถ้าต้องการมีตัวอักษร {$ ในผลลัพธ์ จะต้อง escape เป็น {\$
การทำงานกับ Array
array ใน PHP มีความแตกต่างจากภาษาอื่นคือ สามารถตั้งชื่อดัชนีเป็นข้อความ เรียกว่า associative array นอกเหนือจากการใช้ตัวเลข การเก็บข้อมูลใน array สามารถเป็นตัวเลข ข้อความ รวมถึง array จึงทำให้การประยุกต์มีประสิทธิภาพ
|