วันพฤหัสบดีที่ 27 พฤศจิกายน พ.ศ. 2557

PHP

เริ่มต้นด้วย PHP

PHP เป็นภาษาตัวแปลสคริปต์ หมายความว่า language engine เรียกใช้สคริปต์ที่เขียนขึ้นโดยไม่มีขั้นตอนกลางในการคอมไพล์ หรือไปเป็นรูปแบบไบนารี สคริปต์ส่วนใหญ่ที่ใช้สร้างโปรแกรมประยุกต์เว็บอยู่ในที่เดียวกับไฟล์ HTML ตามปกติไฟล์เก็บสคริปต์จะเก็บเป็นนามสกุล .php ถึงแม้ว่าบุคคลทั่วไปจะใช้นามสกุลเก่าคือ .php3 และ .phtml พื้นที่เก็บไฟล์เหล่านี้จะขึ้นกับการตั้งค่าคอนฟิกให้แม่ข่ายเว็บส่งผ่านไฟล์เหล่านี้ไปยังตัวแปร PHP พื้นที่จัดเก็บไฟล์หรือเอกสารนี้ได้รับอ้างถึงในฐานะ document root

การใช้ PHP Tag

PHP 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 ชุดให้ผลลัพธ์เหมือนกัน แต่ชุดแรกอ่านได้ง่ายกว่า

Comment

Comment ในคำสั่ง ทำหน้าที่เป็นหมายเหตุให้กับผู้อ่านคำสั่ง 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 สนับสนุนประเภทข้อมูล
  1. integer
  2. float หรือ double
  3. string
  4. boolean
  5. array
  6. object

Integer

integer คือจำนวนเต็ม ตามปกติความแม่นยำขึ้นกับระบบปฏิบัติการ ส่วนใหญ่เป็นขนาด 32 บิต ใน PHP ไม่มี unsigned integer ดังนั้นค่ามากที่สุดของจำนวนเต็มคือ 2 พันล้าน เมื่อเกินจำนวนมากที่สุดของ integer ใน PHP จะแปลงไปเป็น float แทนที่จะไปเป็นจำนวนเต็มลบเหมือนภาษาอื่น
<?php
$large = 2147483647;
var_dump($large);

$large = $large + 1;
var_dump($large);
?>
ผลลัพธ์ คือ
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
$floatvar1 = 8.457; 
$floatvar2 = 5.23e3; // เหมือนกับ 5230.0
$floatvar3 = 7.2e+4; // เหมือนกับ 72000.0
$floatvar4 = 1.234e-4;// เหมือนกับ 0.0001234
$floatvar5 = 100000000000;// ใหญ่เกินไปสำหรับ integer แปลงเป็น float
?>
ข้อควรระวัง      สำหรับ 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
Escapeผลลัพธ์
\nตัวอักษรขึ้นบรรทัดใหม่ (char(10) หรือ 0x0a/10 ใน ASCII)
\rตัวอักษร Carriage return (char(13) หรือ 0x0a/13 ใน ASCII)
\tตัวอักษรแท็บ
\\ตัวอักษร backslash
\$ตัวอักษรดอลลาร์
\0ตัวเลขฐานแปดตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานแปด
\xตัวเลขฐานสิบตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานสิบ
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
 เช่นกัน นี่เป็นตัวอย่างของส่วนขยาย array '$type[0]'
THE_END;
?>
เมื่อ PHP processor เห็น $ ในข้อความ double quoted หรือ heredoc จะอ่านตัวอักษรทั้งหมดจนสิ้นสุดชื่อตัวแปร, ดัชนีของ array หรือคุณสมบัติอ๊อบเจค จากนั้นจะประเมินผลลัพธ์และวางค่าในข้อความผลลัพธ์
ตามตัวอย่าง ถ้าไม่ใส่ single quoted (‘) ล้อมตัวแปร $type ไว้ PHP จะแสดงผลลัพธ์เป็นความผิดพลาด
การแก้ปัญหานี้สามารถใช้ส่วนขยายตัวแปรแบบซับซ้อน การใช้ให้หุ้มส่วนขยายด้วยวงเล็บปีก { } ในคำสั่ง PHP processor มองหาวงเล็บปีกกาทันทีต่อจาก $ ที่ระบุแหล่งส่วนขยายตัวแปร กรณีอื่นแสดงผลวงเล็บปีกและสิ่งที่ติดตามมา

<?php
$hour = 16;
$kilometres = 4;
$content = "ลูกอม";

echo "   4pm ในเวลา 24 ชั่วโมง คือ  {$hour}00 นาฬิกา<br/>\n";
echo <<<MSG
ระยะทาง {$kilometres}000 เมตร เท่ากับ {$kilometres} กม.<br/>
กระปุกอยู่ที่นี่ และเต็มไปด้วย${content}<br/>
MSG;
?>
ถ้าต้องการมีตัวอักษร {$ ในผลลัพธ์ จะต้อง escape เป็น {\$

การทำงานกับ Array

array ใน PHP มีความแตกต่างจากภาษาอื่นคือ สามารถตั้งชื่อดัชนีเป็นข้อความ เรียกว่า associative array นอกเหนือจากการใช้ตัวเลข การเก็บข้อมูลใน array สามารถเป็นตัวเลข ข้อความ รวมถึง array จึงทำให้การประยุกต์มีประสิทธิภาพ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น