การสร้าง library และการแทรก PHP จาก File อื่นๆ 9


การสร้าง library และการแทรก PHP จาก File อื่นๆ
เราสามารถที่จะเขียนฟังก์ชันของ PHP ที่จะใช้งานร่วมกันระหว่างหลายๆ โปรแกรมไว้รวมกันใน File หนึ่ง File ใดในลักษณะของ Library ได้ โดยการใช้ require ซึ่งจะทำหน้าที่เป็น Proprocessor ในทำนองเดียวกันกับ include ของภาษา C ดังตัวอย่างต่อไปนี้
ตัวอย่าง File “common.inc”
<?
function Msgbox($msg,$title);
echo "<P><B>$title</B></P>\n";
echo "<P>$msg</P>\n";
?>
ตัวอย่าง File “sample.inc”
<?
require ("common.inc");

echo "Call to Msgbox";
Msgbox("Hi!!!","Greeting");
?>
นอกจากนี้ยังจะสามารถแทรก File ในลักษณะแทรกผลลัพธ์เท่านั้นได้อีกด้วยโดยการใช้ Include ดังนี้
<?
// Show Form.php Here

echo "Form 1";
$form="1";
include ("Form.php");

echo "Form 2";
$form="2";
include ("Form.php");
?>
ข้อมูลและตัวแปรต่างๆ ภายใน File ที่ include มาจะเป็นตัวเดียวกันกับข้อมูลใน File หลักเสมอ

Class และ Object php 8

Class หรือ Object เป็นโครงสร้างของโปรแกรมที่รวบรวมข้อมูล และฟังก์ชันไว้ด้วยกันอย่างเป็นหมวดหมู่ โดยในแต่ละ Class นั้นจะมี ข้อมูลและ Method สำหรับจัดการโครงสร้างข้อมูลนั้นๆ โดยเฉพาะทั้งนี้แนะนำให้ผู้อ่านศึกษาจากตัวอย่าง (หรืออาจจะศึกษาจากคู่มือภาษา C++ หรือ Java ก็ได้)
โครงสร้าง Class
การสร้าง Class คือการสร้างโครงร่างของข้อมูลและฟังก์ชันที่เกี่ยวข้องเท่านั้นเมื่อต้องการใช้งาน ผู้ใช้จะต้องสร้างตัวแปรและกำหนดให้เป็นข้อมูลประเภท Class ที่กำหนด โครงสร้างของ Class จะประกอบด้วย ข้อมูล Method ต่างๆ และจะมี Method พิเศษอันหนึ่งซึ่งจะเป็น Construction ที่จะถูกเรียกเมื่อมีการสร้าง Class ทั้งนี้ฟังก์ชันที่เป็น Construction จะต้องมีชื่อเดียวกันกับ Class เสมอ ตัวอย่างการสร้าง Class
<?
class Queue {
            var $lists; // the list for queue
            var $max; // the max of queue
            var $curr; // the max of queue
            function Queue($maxlist = 100) {
            // Construction
                        $max=$maxlist;           
                        $curr=0;           
            }

            function enQueue($data) {
            // enQueue Method
                        if ($curr==$maxlist)
                                    return -1 ; // Queue is full
                        else {
                                    $lists[$curr++] = $data;
                        }
             }

            function deQueue($data) {
            // deQueueMethod
                        if ($curr==0)
                                    return -1 ; // Queue is empty
                        else {
                                    $data = $lists[$curr--];
                        }
                        return $data;
             }

}

$queue1 = new Queue(10);
$queue2 = new Queue();

$queue1->enQueue("data1");
$queue2->enQueue("data2");
?>

การสร้าง Class ใหม่จาก Class เดิม
นอกจากนี้เรายังสามารถที่จะสร้าง class ใหม่ที่มีพื้นฐานมาจาก Class เดิมที่มีอยู่ได้อีกด้วย ซึ่งเราเรียกการทำงานในลักษณะนี้ว่า การ Derive Class ซึ่งการเรียกใช้จะเขียนในทำนองเดียวกันกับการ Extend Class ของ Java ดังตัวอย่างแสดงการสร้าง Queue แบบใหม่ที่สามารถจะดูจำนวนที่ว่างที่เหลือใน Queue ได้ ทั้งนี้การอ้างอิงถึง Class ที่กำลังทำงานด้วยเราจะใช้ตัวแปรชื่อ $this เสมอ
<?
class Ext_Queue extends Queue{
            function Ext_Queue($maxlist = 100) {
            // Construction
                        $this->Queue($maxlist);           
            }

            function RemainQueue() {
            // enQueue Method
                        return max-curr;
             }

}

$queue1 = new Ext_Queue(10);

echo $queue1->RemainQueue();

?>

ทั้งนี้ข้อควรระวังคือ Class ที่ Derived มาใหม่นี้จะไม่มีการเรียก Constructor ของ Class ที่เป็นต้นแบบมาด้วย

การสร้างฟังก์ชัน php7



การสร้างฟังก์ชัน
การกำหนดฟังก์ชันใหม่
การกำหนดฟังก์ชันใหม่ใน PHP ทำได้โดยการระบุ function ก่อนเริ่มเขียนโปรแกรมแสดงการทำงาน อย่างไรก็ตามข้อควรระวังคือตัวแปรที่สร้างขึ้นมาใหม่ใน Local จะอยู่ในขอบเขตของฟังก์ชันที่สร้างขึ้นเท่านั้น (ดูรายละเอียดเพิ่มเติมในขอบเขตตัวแปร ) ตัวอย่างการกำหนดฟังก์ชันใหม่ เช่น
<?
function max($a,$b)
{
           if ($a>$b)
                      $max = $a;
           else
                      $max = $b;
           return $max;
}
?>

การผ่านค่า arguments
จากตัวอย่างในการผ่านค่า Parameter ข้างต้น เราจะพบการผ่านค่า Parameter ที่เรียกว่า By VALUE คือการแก้ไขข้อมูลภายในฟังก็ชันไม่มีผลต่อข้อมูลจริงชุดเดิมแล้ว ในส่วนนี้เราจะกล่าวถึงการผ่านค่า Parameter แบบ By REFERENCE ซึ่งการอ้างอิงหรือเปลี่ยนตัวแปรจะเป็นการอ้างอิงและแก้ไขทีข้อมูลชุดเดิม ดังตัวอย่างต่อไปนี้
<?
function swap(&$a,&$b)
// ข้อสังเกตที่ตัวแปรจะมีเครื่องหมาย ampasand “&” อยู่ด้วย
{
          $tmp=$a;
          $a=$b;
          $b=$tmp;
}

$x=5;
$y=10;
swap($x,$y);
// จะได้ค่า x เป็น 10 และ ค่า y เป็น 5
?>
นอกจากนี้ PHP ยังสนับสนุนการใช้งาน Default Argument เช่นเดียวกันกับภาษา C++ ด้วย ดังตัวอย่างต่อไปนี้
<?
function cook($time,$food="chicken");
{
           echo "Cook $food in $time mins";
}

cook(10); // จะแสดง Cook chicken in 10 mins;
cook(10,"fish" ); // จะแสดง Cook fish in 10 mins;

?>
** ข้อควรระวัง หากมีการใช้ Default Argument ร่วมกับการใช้งานปกติ ควรให้ตัวแปร Argument ที่มีการระบุค่า Default อยู่ทางขวามือเสมอ
ใน PHP 4 ผู้เขียนสามารถที่จะเขียนโปรแกรมให้รับข้อมูลในลักษณะที่มีตัวแปรไม่จำกัดได้โดยอาศัยการทำงานร่วมกับฟังก์ชัน func_num_args(), func_get_arg(), and func_get_args() ซึ่งจะแสดงจำนวน Argument และ ค่าที่ได้รับตามลำดับ ดังตัวอย่างต่อไปนี้
<?
function cook();
{
           $numargs = func_num_args();          
           echo "Cook $numargs of food(s)";
           if ($numargs >= 2) {
                      echo "Dish No.2 is: " . func_get_arg (1) . "<br>\n";
            }
           $arg_list = func_get_args();
           for ($i = 0; $i < $numargs; $i++) {
                      echo "Disk $i+1 is: " . $arg_list[$i] . "<br>\n";
           }
}

cook("chicken","fish","pork");

?>

การคืนค่า
โดยปกติการคืนค่าใน PHP นั้นจะทำได้โดยการใช้คำสั่ง return ซึ่งจะกระทำได้เพียงค่าเดียวเท่านั้น อย่างไรก็ตามหากผู้ใช้ต้องการจะคืนค่ามากกว่า 1 ค่าอาจจะทำได้โดยการคืนค่าเป็น Array 1 ชุดก็ได้ ดังตัวอย่างต่อไปนี้
<?
function getuserinfo() {
          return array("krerk","piromsopa");
}
$userinfo = getuserinfo()
echo $userinfo[0];
echo $userinfo[1];

?>

การใช้ตัวแปรเรียกฟังก์ชัน
นอกจากการสนับสนุน ตัวแปรตัวแปร (Variable Variable ) ซึ่งทำงานในลักษณะของ Pointer แล้วPHP ยังสนับสนุนการใช้ตัวแปรฟังก์ชันที่มีลักษณะเหมือนกับ Pointer to ฟังก์ชั่นอีกด้วย ดังตัวอย่างต่อไปนี้
<?
function getten() {
          return 10;
}
function isone($x=0) {
          return ($x==1);
}

$func = "getten";
$val = $func();
$func = "isone";
$func("10");
?>

ตัวปฏิบัติการ php6



ตัวปฏิบัติการ
กำหนดค่า
การกำหนดค่าใน PHP จะใช้เครื่องหมายเท่า “=” กับเช่นเดียวกันกับภาษา C และ Java นอกจากนี้ PHP ยังสนับสนุน Combinded Operator สำหรับตัวเลขและตัวอักษรอีกด้วย ดังตัวอย่างต่อไปนี้
<?
$a = $b = ($c=2) + 3;
// ผลลัพธ์ที่ได้คือ $a และ $b มีค่าเป็น 5 ส่วน $c มีค่าเป็น 2

$a = 9;
$a +=4;
// ผลลัพธ์ที่ได้คือ $a มีค่าเป็น 13

$st = "Good";
$st .= " Morning";
// ผลลัพธ์ที่ได้คือ $at = "Good Morning" เป็นต้น

?>
นอกจากนี้ใน PHP 4 ยังสนุนสนุนการ Assign ค่าแบบ Reference อีกด้วย เช่น
<?
$a = 4;
$b = &$a;
// $b และ $a จะอ้างอิงถึงข้อมูลชุดเดียวกัน

$b = 9;
// ผลลัพธ์ที่ได้คือ ทั้ง $a และ $b จะมีค่าเป็น 9
?>

คณิตศาสตร์
การคำนวณทางคณิตศาสตร์พื้นฐานต่างๆ ที่PHP สามารถทำได้คือการบวก การลบ การคูณ การหาร และ การหารเอาเศษ (Modulo) นอกจากนี้ยังมีการ Intrement และ Decrement อีกด้วย ซึ่งมีลักษณะการทำงานแสดงได้ดังตัวอย่างต่อไปนี้
ตัวอย่าง
การทำงาน
$a + $bหาผลรวม (บวก)
$a - $bหาผลต่าง (ลบ)
$a * $bคูณ
$a / $bหาร
$a % $bหารเอาเศษ
$a++Postincrement
++$aPreincrement
$a--Postdecrement
--$aPredecrement
สำหรับผู้ที่คุ้นเคยกับภาษาเช่น C นั้นคงจะเข้าใจการทำงานของ Pre/Post Increment และ Decrement เป็นอย่างดี นั้นคือการ Assign ค่าก่อนแล้วจึงประมวลผล หรือ การ Assign ค่าหลังจากการประมวลผล สำหรับผู้ที่ไม่คุ้นเคยขอให้ดูตัวอย่างต่อไปนี้เพื่อประกอบความเข้าใจ
<?
$a=5;
// $a มีค่าเป็น 5
$b=$a++;
// $a มีค่าเป็น 6 $b มีค่าเป็น 5
$c=++$a;
// $a และ $c มีค่าเป็น 6
$d=--$c;
// $c และ $d มีค่าเป็น 5
$e=$d--;
// $e มีค่าเป็น 5 $d มีค่าเป็น 4
?>

เปรียบเทียบ
การเปรียบเทียบค่าบน PHP จะให้คำตอบเป็นจริงหรือเท็จเช่นเดียวกันกับภาษาอื่นๆ โดยการเปรียบเทียบจะใช้ได้กับข้อมูลทุกประเภท ไม่ว่าจะเป็นตัวอักษร หรือ จำนวนก็ตาม สัญลักษณ์ของเครื่องหมายที่ใช้แสดงได้ดังนี้
ตัวอย่าง
การทำงาน
$a == $bเป็นจริงเมื่อ $a เท่ากับ $b
$a === $bเป็นจริงเมื่อ $a เท่ากับ $b และเป็นข้อมูลชนิดเดียวกัน (PHP 4)
$a != $bเป็นจริงเมื่อ $a ไม่เท่ากับ $b
$a < $bเป็นจริงเมื่อ $a น้อยกว่า$b
$a > $bเป็นจริงเมื่อ $a มากกว่า$b
$a <= $bเป็นจริงเมื่อ $a น้อยกว่าเท่ากับ$b
$a >= $bเป็นจริงเมื่อ $a มากกว่าเท่ากับ $b
อย่างไรก็ตาม PHP ยังสนับสนุนการทำงานแบบ Conditional Operator เช่นเดียวกันกับภาษา C กล่าวคือ หากเขียนว่า $a = ($b==$c)? "เท่ากัน" : "ไม่เท่ากัน"; แล้ว จะทำให้ $a มีค่าเป็น "เท่ากัน" เมื่อ $b มีค่าเท่ากับ $c และ มีค่าเป็น "ไม่เท่ากัน" ถ้า $b ไม่เท่ากับ $c เป็นต้น
bitwise
การกระทำทาง bitwise ของ PHP จะประกอบด้วยเครื่องหมายหลักพื้นฐานคือ And , Or , Exclusive-Or, Not, Shift Left และ Shift right ดังจะแสดงได้ตามตารางต่อไปนี้
ตัวอย่าง
การทำงาน
$a & $b$a and $b
$a | $b$a or $b
$a ^ $b$a xor $b
~$anot $a
$a << $bShift $a left $b ครั้ง
$a >> $bShift $a right $b ครั้ง
ตัวอย่างการใช้งาน Bitwise Operator เช่น
<?
$a = 0x0a;
$b = 0x28;

$c = $a & $b;
// $c จะมีค่าเป็น 0x08

$d = 8;
$d = $d << 2;
// $d จะมีค่าเป็น 32
?>

ตรรกะ
ผู้เขียนโปรแกรมโดยทั่วไปมักจะสับสนระหว่าง Logical Operation และ bitwise Operation อย่างไรก็ตามเพื่อไม่ให้เกิดความสับสน ผู้เขียนมีข้อแนะนำในการจำคือ Logical Operation จะให้ผลลัพธ์เป็น จริงหรือเท็จเท่านั้น ส่วน bitwise Operation จะให้ผลลัพธ์เป็น Binary ส่วนการเปรียบเทียบค่าแบบ Logical บน PHP จะใช้สัญลักษณ์ดังต่อไปนี้
ตัวอย่าง
การทำงาน
$a and $b หรือ $a && $bเป็นจริงถ้า $a และ $b เป็นจริง
$a or $b หรือ $a || $bเป็นจริงถ้า $a หรือ $b เป็นจริง
$a xor $bเป็นจริงถ้า $a และ $b อันใดอันหนึ่งเป็นจริงเท่านั้น
! $aเป็นจริงถ้า $a เป็นเท็จ
ตัวอย่างการใช้งานเช่น
<?
$a = 5;
$b = 10;

$c = (($a=$b) and ($a !=0)) ? "เท่ากับ":"ไม่เท่ากัน หรือเป็น 0";
?>

ตัวอักษร
ตัวปฏิบัติการที่ใช้ได้กับตัวอักษรมีเพียงตัวเดียวเท่านั้นคือ concatinate ซึ่งเป็นการนำเอาตัวอักษรมาต่อกัน โดยใช้สัญลักษณะแทนคือ จุด“.” ดังจะแสดงได้ตามตัวอย่างต่อไปนี้
<?
$a = "Hello";
$name = "krerk";

echo $a . " , " . $name;
?>

การจัดการ Error
ภาษา PHP มีโครงสร้างที่รองรับความผิดพลาดที่อาจจะเกิดขึ้นได้จากการประมวลผลคำสั่งต่างๆ คือ ”@” ซึ่งจะทำให้ Program ไม่แสดงค่า Error ของระบบออกมาเมื่อมีการประมวลผล ช่วยให้ผู้ใช้สามารถจัดการกับ Error ที่อาจจะเกิดขึ้นได้ ดังตัวอย่างต่อไปนี้
<?
$conn = @mysql_connect() or die ("Database connection Fail");

// โปรแกรมจะไม่แสดง ERROR ที่เกิดจากการประมวลผลคำสั่ง
// mysql_connect
?>
เรียกโปรแกรมอื่น
นอกจากนี้ PHP ยังสนับสนุนการนำผลลัพธ์จากโปรแกรมภายนอกอื่นๆ มาใช้งานต่ออีก เช่น หากผู้ใช้ต้องการนำผลลัพธ์จากคำสั่ง ls บน Unix มาใช้งาน สามารถทำได้โดยเขียนคำสั่งดังกล่าวใน backquote เช่นเดียวกันกับ Shell Script หรือ Perl ดังตัวอย่างต่อไปนี้
<?
$list = `ls`;
// จะได้ผลลัพธ์จากการทำงานคำสั่ง ls เก็บอยู่ใน $list
echo "<pre> $list </pre>";

?>
รายละเอียดเพิ่มเติมให้ดูจาก system(), passthru(), exec(), popen(), and escapeshellcmd().

ประโยคควบคุม php 5

ประโยคควบคุม
ในการควบคุมลำดับการทำงานนั้น ทุกๆ ภาษาจะมีประโยคที่มีเงื่อนไขในการควบคุมเสมอ เช่น "ถ้า A เป็นจริง ให้ทำ B ถ้าไม่ใช้ให้ทำ C " เป็นต้น ในภาษา PHP ก็เช่นเดียวกัน ลักษณะของประโยคเงื่อนไขในภาษา PHP ประกอบด้วย
  • if .... else .... elseif
  • while
  • do ... while
  • for
  • foreach
  • break
  • continue
  • switch
if ... else .... elseif
if คือประโยคเงื่อนไขซึ่งจะกระทำเมื่อเงื่อนไขเป็นจริง ซึ่งอาจจะมี else หรือไม่ก็ได้
โครงสร้าง
if (expression) {
       statement;
}
elseif (expression) {
       statement;
}
else {
       statement;
}
<?php

if ($count > 5)
        echo "count มากกว่า 5";

// หรือ กรณีที่มี if แล้วต้องการทำมากกว่า 1 ประโยค

if ($count > 5)
{
        echo "count มากกว่า 5";
        $count=0;
}

// กรณีมี if และ else

if ($count > 5)
{
        echo "count มากกว่า 5";
        $count=0;
}
else
{
        echo "count น้อยกว่าหรือเท่ากับ 5";
        $count++;
}

?>
ในบางกรณีอาจจะมีเงื่อนไข if ซ้อนกันหลายชั้น หรืออาจจะมีทางเลือกมากกว่า 2 ทาง เช่น
<?php

if ($count > 5)
{
        echo "count มากกว่า 5";
        $count=0;
}
elseif ($count==5)
{
        echo "count เท่ากับ 5";
        $count++;
}
else
{
        echo "count น้อยกว่า 5";
        $count++;
}

?>
ทั้งนี้กรณีมีทางเลือกของข้อมูลมากกว่า 2 ทาง การใช้ switch อาจจะทำให้ Code ที่เขียนดูเข้าใจง่ายกว่า
นอกจากนี้ PHP ยังสนับสนุนการเขียน if...else ในแบบของภาษา basic โดยการใช้ if และ endif อีกด้วย ทั้งนี้มีข้อจำกัดเพิ่มเติมคือจะต้องใส่เครื่องหมาย colon “:” หลังเงื่อนไข if ดังตัวอย่างต่อไปนี้
โครงสร้าง
if (expression) :
      statement;
endif;
<?php
if ($a==5):
?>
A equals to 5
<?php
else
?>
A not equals to 5
<?php
endif;
?>

while
Loop while ในภาษา PHP จะทำงานในลักษณะเดียวกันกับ Loop while ในภาษา C คือจะทำการตรวจสอบเงื่อนไขใน while และหากเงื่อนไขนั้นเป็นจริงก็จะทำการประมวลผล ซึ่ง PHP จะรองรับการเขียน Loop while ทั้งแบบภาษา C และ การเขียน Loop while ในรูปแบบของภาษา Basic ดังตัวอย่างต่อไปนี้
โครงสร้าง
while (expression) {
    statement;
}
หรือ
while (expression) :
    statement;
endwhile;
<?php
// ตัวอย่างที่ 1
// แสดงผลลัพธ์ 0-4

$i=0;
while ($i<5)
{
      echo $i++;
}

// ตัวอย่างที่ 2
// แสดงผลลัพธ์ 0-4 (Syntax ต่างกัน)

$i=0;
while ($i<5) :

      echo $i++;

endwhile;
?>

do...while
do...while เป็น Loop ที่ทำงานในลักษณะเดียวกันกับ Loop While แต่มีข้อแตกต่างกันคือ Loop do...while จะตรวจสอบเงื่อนไขหลังจากการประมวลผล ดังตัวอย่างต่อไปนี้
โครงสร้าง
do {
     statement;
} while(expression);
<?php
// ตัวอย่างที่ 1
// แสดงผลลัพธ์ 0

$i=0;
do
{
       echo $i;
       $i++;
} while ($i<1);
?>

for
for เป็น Loop ที่เกิดจากการผสมเงื่อนไขเริ่มต้น Loop while และ การเพิ่มลดค่าไว้ด้วยกัน เพื่อให้การเขียนเข้าใจได้ง่ายขี้น เพื่อประกอบความเข้าใจ ในที่นี้จึงจะขอยกตัวอย่างการทำงานที่เหมือนกัน แต่เขียนเป็น Loop for เปรียบเทียบกับ Loop while ดังต่อไปนี้
โครงสร้าง
Loop forLoop While
for (exp1;exp2;exp3) {
      statement;
}
หรือ
for (exp1;exp2;exp3) :
     statement;
endfor;
exp1;
while (exp2) {
       statement;
       exp3;
}

<?php
// เขียนด้วย Loop While
$i=0;
while ($i<5)
{
echo "Line :" . $i . "<br>\n";
$i++;
}

// เขียนด้วย Loop for
for ($i=0;$i<5;$i++)
       echo "Line :" . $i . "<br>\n";

?>

foreach
เป็น Loop ที่เกิดจากการผสมผสาน Loop while , Function List และ Function each (รายละเอียดของ Array ให้ดู Function เกี่ยวกับ Array) ทั้งนี้ Loop foreach เพิ่งจะถูกพัฒนาขึ้นบน PHP4 หลักการทำงานโดยทั่วไปคือการนำค่าแต่ละตัวภายใน Array มาทำากรประมวลใน Loop แต่ละรอบ
โครงสร้าง
Loop foreachLoop While ร่วมกับ list และ each
foreach ($array as $val) {
       statement;
}
หรือ
foreach ($array as $key => $val) {
       statement;
}
reset ($array);
while (list(,$val) = each ($arr)) {
       statement;
}
หรือ
reset ($array);
while (list($key,$val) = each ($arr)) {
       statement;
}

ตัวอย่างการใช้ Loop foreach
<?php
$arr = array (
"firstname" => "K",
"lastname" => "P"
);

foreach ($arr as $value) {
       echo "Each Value of Arr is : $value<br>\n";
}

// หรือ

foreach ($arr as $key => $value) {
       echo "Each Value of Arr is $key => $value<br>\n";
}
?>

break
ในที่นี้มีลักษณะเดียวกันกับ break ในภาษา C คือใช้สำหรับการออกนอก Loop หรือ Block ของประโยคควบคุมต่างๆ เช่น if, for, while และ switch
นอกจากนี้จุดเด่นของ break ใน PHP คือสามารถระบุได้ด้วยว่าจะให้ออกจาก Loop กี่ขั้น ดังตัวอย่างต่อไปนี้
<?php
for ($i=0;$i<10;$i++) {
      if ($arr[$i] == "stop") {
            break; // หรือ break 1;
     }
}

// หรือ

$i=0;
while (true) {
      $i++;
      switch ($i) {
      case 5
                echo "5";
               break 1; // ออกจาก switch
      case 10:
              break 2; // ออกจาก loop while
      default:
              break;
       }
}
?>

continue
continue นั้นมีลักษณะที่คล้ายคลึงกับ break หากแต่ break นั้นคือการออกจาก Loop หรือ Block ที่กระทำอยู่ ในขณะที่ Continue นั้นจำข้ามไปยังรอบถัดไปของ Loop
เช่นเดียวกับ break จุดเด่นของ continue ใน PHP คือสามารถระบุได้ด้วยว่าจะให้ข้าม Loop กี่รอบ ดังตัวอย่างต่อไปนี้
<?php
while (list ($key,$value) = each($arr)) {
     if ($val == "skip") {
            continue ;
}
     echo "$key : $value<br>\n";
}
?>

switch
การใช้ swtich นั้นเป็นเพียงการช่วยให้ Code ที่เขียนดูเข้าใจง่ายขึ้นเท่านั้น แต่การทำงานของ switch จะมีความหมายเหมือนกับการเขียน if ต่อกันหลายๆ อัน
โครงสร้าง
SwitchIf series
switch ($var) {
      case exp1 :
          statement;
      case exp2 :
          statement;
          break;
.....
....
      default:
          statement;
}
หรือ
switch ($var) :
      case exp1 :
          statement;
      case exp2 :
          statement;
          break;
.....
....
      default:
          statement;
endswitch;
if ($var == exp1) {
      statement;
}
if (($var == exp1) || ($var == exp2)) {
      statement;
}
ข้อควรระวังคือ หากไม่ระบุ break จะมีเงื่อนไขเหมือนกับ or ของหลายๆ เงื่อนไข
<?php
switch ($cmd) {
       case "a" :
       case "A":
            echo "Add";
            break;

       case "d" :
       case "D":
            echo "Delete";
            break;

       default:
              echo "Command not found";
}
?>

ค่าคงที่ php 4

ค่าคงที่จะทำงานในลักษณะที่คล้ายคลึงกับตัวแปร แต่มีข้อแตกต่างคือ ค่าคงที่จะต้องถูกกำหนดผ่าน Function define() เท่านั้น และ สามารถกำหนดได้เพียงครั้งเดียวในโปรแกรม ไม่สามารถกำหนดทับได้ ตัวอย่างเช่น
<?php
define("ADMIN","Krerk Piromosopa.");

echo "System Admin : " . ADMIN;
?>
ค่าคงที่ซึ่งกำหนดให้โ่ดยระบบประกอบด้วย
  • __FILE__
    แสดงชื่อไฟล์ที่กำลังทำการประมวลผลอยู่
  • __LINE__
    แสดงบรรทัดปัจจุบันที่กำลังประมวลผลอยู่
  • PHP_VERSION
    แสดงเลขที่ Version ของ PHP
  • PHP_OS
    OS ของระบบ เช่น Linux , WINNT
  • TRUE
    ค่า ture
  • FALSE
    ค่า false
  • E_ERROR
  • E_WARNING
  • E_PARSE
  • E_NOTICE
ตัวแปร E ทั้งหมดจะใช้อ้างอิงกรณีมีความ Error เกิดขึ้น (ดูรายละเอียดเพิ่มเติมใน Function error_reporting() )

ทั้งนี้หากผู้อาจจะใช้ประโยชน์จากค่าคงที่ได้มากมาย ขึ้นอยู่กับทักษะในการเขียนโปรแกรม เช่น การเขียนโปรแกรมเพื่อแทรก Code สำหรับการ Debug และ เมื่อใช้งานจริงก็ปรับตัวแปร DEBUG เป็น FALSE ดังตัวอย่าง
<?php
define("DEBUG",TRUE);
if (DEBUG)
{
echo "Debug Mode " . __FILE__ . " at line" . __LINE__;
}

echo "My Process<br>\n";
?>

โครงสร้างข้อมูล Php 3



โครงสร้างข้อมูล
PHP สนับสนุนโครงสร้างข้อมูลแบบ จำนวนเต็ม (Interger) จำนวนทศนิยม (Floating Point) Arrays สายอักษร (String) และ วัตถุ (Objects) อย่างไรก็ตาม การจะระบุว่าตัวแปรมีโครงสร้างข้อมูลประเภทใดนั้น เป็นแบบ Implicit กล่าวคือไม่มีการประกาศอย่างเป็นทางการ แต่ตัวแปลภาษา PHP จะทำการเดาให้เอง ทั้งนี้เนื้อหาในส่วนนี้จะแสดงถึงโครงสร้างข้อมูลแบบต่างๆ
จำนวนเต็ม
จำนวนเต็มใน PHP สามารถระบุได้ด้วยเลขฐานสิบ ฐานแปด และฐานสิบหก ในลักษณะเดียวกันกับภาษา C ดังตัวอย่างต่อไปนี้
<?php
$a = 1000;
$b = -1024;
$c = 0123 // เลขฐานแปดมีค่าเป็น 83
$d = 0x0a // เลขฐานสิบหกมีค่าเป็น 10
?>
จำนวนทศนิยม
จำนวนทศนิยมใน PHP จะเป็นแบบ Double Precision ในลักษณะเช่นเดียวกันกับภาษา C ซึ่งสามารถระบุได้ด้วยเลขทศนิยมแบบปกติ หรือ อาจระบุแบบ Scientific เช่น 1.2e3 ซึ่งหมายถึง 1.2*103ดังตัวอย่างต่อไปนี้
<?php
$a = 1.25; // 1.25
$b = -1.25e3; // (-1) * 1.25 * 103
?>
สายอักษร
สายอักษรหรือ Strings จัดเป็น Arrays ประเภทหนึ่งโดยตัวอักษรตัวแรกจะเริ่มที่ Index 0 ใน PHP นั้นมี 2 วิธีในการกำหนดค่า String ให้กับตัวแปร คือการใช้ Single Quote “'”และ Double Quote “"” และมีวิธีการระบุค่า Escape Sequence เพื่อใช้แสดงค่าตัวอักษรพิเศษบางตัว ดังแสดงได้ในตารางต่อไปนี้
sequence
meaning
\nขึ้นบรรทัดใหม่ (newline)
\rcarriage
\thorizontal tab
\\เครื่องหมาย “\” backslash
\$เครื่องหมาย “$”dollar sign
\"เครื่องหมาย “"”double-quote
\[0-7]{1,3}ตัวอักษรระบุดัวยเลขฐานแปด
\x[0-9A-Fa-f]{1,2}ตัวอักษรระบุดัวยเลขฐานสิบหก
กรณีอ้างอิงด้วย “"” นั้น เมื่อต้องการจะพิมพ์ เครื่องหมาย “"” ให้พิมพ์ด้วย \" เป็นต้น ส่วนกรณีต้องการจะพิมพ์ “'” ก็สามารถพิมพ์ได้ตามปกติ ในกรณีอ้างอิงด้วย “'” ไม่จำเป็นจะต้อง Escape เครื่องหมาย Double-Quote แต่จะเปลี่ยนไป Esacpe “'” ด้วย \' แทน ทั้งนี้เพื่ออำนวยความสะดวก ดังตัวอย่างต่อไปนี้
<?php
$str="It is good to use PHP.";

echo $str[1]; // แสดงค่า t

echo "It's the php.\n";

echo 'He\'ll says "You are the best".';
?>
นอกจากนี้ PHP ยังสนับสนุนการทำงานแบบ Here Document เช่นเดียวกับ Perl และ Unix-Shell อีกด้วย ดังจะแสดงได้ในตัวอย่างต่อไปนี้
<?php
$a=10;
$str= <<<EOF
Hello, World;
This is the sample Here Document.
$a is $a;
EOF;
// or
echo <<<END
Hi!!!
This is sample Of Here Document.
END;
?>
ฟังก์ชันที่เกี่ยวข้องกับสายอักษรนั้น สามารถดูในจาก String Function Reference ของ PHP Manual ดังตัวแย่างแสดงการใช้ strlen ซึ่งเป็นฟังก์ชันในการหาความยาวของ String และ การกระทำกับ String แบบต่างๆ
<?php
$a= "I'm";
$name = "teacher.";

echo "<p>".$a." ".$name."</p>\n";
echo "<br>$a $name<br>\n";
$c= "$a $name";
echo strlen($c);
?>
ข้อควรระวัง : ในการต่อสายอักษรเข้าด้วยกันนั้น PHP จะใช้จุด “.” เป็นตัวปฏิบัติการ ซึ่งแตกต่างจาก Java ที่จะใช้เครื่องหมาย + (รายละเอียดเพิ่มเติมดูในหัวข้อตัวปฏิบัติการตัวอักษร)
Arrays
ภาษา PHP นั้น Arrays จะทำหน้าที่เหมือนเป็น Number Indexed Array และ Hash Table ในเวลาเดียวกัน กล่าวคือ Index ของ Arrays ในภาษา PHP จะเป็นได้ทั้งจำนวนเต็ม และ ตัวอักษร ซึ่งการสร้าง Array อาจทำได้โดยอาศัย Function List หรือ Array หรือ ผู้เขียนอาจจะเขียนข้อมูลลงไปใน Array โดยตรงเลยก็ได้ ดังตัวอย่างต่อไปนี้
<?php
$Arr = Array("first" => "1" , "second" => "2" , "third" => "3");

echo $Arr[first]." ".$Arr[second]." ".$Arr[third]; // แสดงค่า 1 2 3

// Or

$Marr[first] = "1";
$Marr[second] = "2";
$Marr[third] = "3";

echo $Marr[first]." ".$Marr[second]." ".$Marr[third]; // แสดงค่า 1 2 3
?>
นอกจากนี้ผู้เขียนโปรแกรมอาจจะเพิ่มข้อมูลเข้าสู่ Array เข้าไปได้เรื่อยๆ โดยไม่จำเป็นต้องระบุตำแหน่ง Index ก็ได้ ซึ่งข้อมูลที่เพิ่มเข้าไปใหม่จะถูกนำไปต่อท้ายโดยอัตโนมัติ
<?php
$A[] = "Zero"; // Add to $A[0]
$A[] = "One"; // Add to $A[1]
$A[] = "Two"; // Add to $A[2]
$A[] = "Three"; // Add to $A[3]

echo $A[2]; // แสดง Two
?>
PHP ยังอำนวยความสะดวกให้ผู้ใช้งานสามารถจัดเรียงข้อมูลใน Array ได้ด้วยฟังก์ชันอื่นๆ เช่น asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() และ uksort() ทั้งนี้ขึ้นอยู่กับลักษณะการ Sort ข้อมูลและ Key ในการ Sort
ฟังก์ชันที่เกี่ยวข้องกับ Array นั้น สามารถดูในจาก Array Function Reference ของ PHP Manual ดังตัวอย่างแสดงการใช้ Function list และ each เพื่อดึง Key และ ข้อมูลออกจาก Array $HTTP_GET_VARS
<?php
while (list ($key, $val) = each ($HTTP_GET_VARS)) {
echo "$key => $val<br>\n";
}
?>
ข้อควรระวัง : ใน PHP3 จะไม่รองรับการอ้างอิง Array หลายมิติใน String เช่น "Name : $Arr[1][name]" อาจจะได้ผลที่ผิดพลาดได้ สำหรับ PHP4 นั้นสามารถอ้างอิงได้โดยการใช้วงเล็บก้ามปูระบุ เช่น "Name : {$Arr[1][name]}" ด้วยเหตนี้ วิธีการที่ดีที่สุดคือการใช้ String Concatinate เช่น "Name :".$Arr[1][name]; ทั้งนื้อเพื่อให้ใช้ได้กับ PHP ทุก Version ดังแสดงในตัวอย่าง
<?php
$Arr[0][name] = "user1";
$Arr[0][password] = "pwd1";
$Arr[1][name] = "user2";
$Arr[1][password] = "pwd3";

echo "Total :".count($Arr)."User(s)";
$i=0;
echo "Name : $Arr[$i][name]\n"; //แสดง Name : Array[name]
echo "Name : {$Arr[$i][name]}\n"; //PHP4 จะ แสดง Name : user1
echo "Name : ".$Arr[$i][name]."\n"; //แสดง Name : user1
?>
Objects
ในการใช้งาน Class และ Object นั้นผู้ใช้ควรมีควมเข้าใจในหลักการของ Object Oriented Programming ก่อนพอสมควร
การพัฒนาโปรแกรมแบบ Object ผู้เขียนโปรแกรมจะต้องเขียนโครงสร้างและ Fuction ต่างของ Object ก่อนจากนั้น จึงทำการสร้างตัวแปรให้เป็นข้อมูลประเภทของ Object นั้นๆ ดังตัวอย่างต่อไปนี้
<?php
class myclass {

function do_job() {
echo "I will do my job;";
}

}

$a = new myclass;
$b = new myclass;

$a->do_job();
$b->do_job();
?>
ทั้งนี้รายละเอียดเพิ่มเติมให้อ่านในส่วนของ Class และ Object ของคู่มิอนี้
การแปลงข้อมูล
ในภาษา PHP นั้น ประเภทของข้อมูลที่เก็บในตัวแปรจะถูกเปลี่ยนให้โดยอัตโนมัติ กล่าวคือผู้ใช้ไม่จำเป็นจะต้องกำหนด หรือ ประกาศตัวแปรใดๆ ทั้งสิ้น (ในทำนองเดียวกับ Perl) โดยการตีความประเภทของข้อมูลนั้น จะถูกตีความโดยองค์ประกอบรอบข้าง (Context) เช่น กรณีมีข้อมูลตัวใดในการบวกเป็นจำนวนเต็มทั้งคู่ ผลลัพธ์ที่ได้ก็จะเป็นจำนวนเต็ม แต่หากมีข้อมูลตัวใดตัวหนึ่งเป็นเลขทศนิยม ระบบก็จะตีความผลลัพธ์เป็นเลข ทศนิยมโดยอัตโนมัติ ดังตัวอย่างต่อไปนี้
<?php
$a="0"; // ข้อมูลที่เก็บจะเป็นสายอักษร
$a++; // ข้อมูลจะเป็น Ascii "1"
$a+=30 // ข้อมูลจะเป็นจำนวนเต็ม 31
$a= 20.01 + $a // ข้อมูลจะถูกแปลงเป็นทศนิยม
$a= 5+"20 box" // ผลลัพธ์ทีได้จะเป็น 25
?>
อย่างไรก็ตามในบางกรณี ผู้เขียนโปรแกรมอาจจะต้องการระบุประเภทของข้อมูลลงไปด้วย เพื่อให้การประมวลผลได้ผลลัพธ์ตามต้องการ การแปลงข้อมูลนี้เรียกว่า Type Casting และเภทข้อมูลที่ PHP รองรับสำหรับการ Casting คือ
  • (int) , (integer) - เพื่อแปลงข้อมูลเป็นประเภทจำนวนเต็ม
  • (real) , (double) , (float) - เพื่อแปลงข้อมูลเป็นเลขทศนิยมทั้งหมด
  • (string) - เพี่อแปลงข้อมูลเป็นสายอักษร
  • (array) - เพื่อแปลงข้อมูลเป็น Array
  • (Object) - เพื่อแปลงข้อมูลเป็น Object
ดังแสดงได้ในตัวอย่างต่อไปนี้
<?php
$x = (int) $str1 + ( int ) $str2;

$str = "Boy";
$arr = (array) $str; // กรณีการแปลงข้อมูลเป็น Array ข้อมูลที่ไดจะเป็น index ที่ 0
echo $arr[0];

$obj = (object) $str; // กรณีแปลงข้อมูลเป็น Object ข้อมูลจะอยู่ใน Attribute ชื่อ scalar
?>
นอกจากนี้ PHP ยังมี Function ที่ช่วยให้เราสามารถตรวจสอบประเภทของข้อมูลที่ใช้กับตัวแปร คือ การใช้ Function gettype() เช่น
<?php
$x=10;
echo "Type of \$x is" . gettype($x) . "<br>\n";
?>
กรณีต้องการเปลี่ยน Type ให้ลองศึกษา Function settype() เพิ่มเติม

ตัวแปร2

ตัวแปรและการอ้างอิง
ชื่อตัวแปรในภาษา PHP จะมีลักษณะเช่นเดียวกันกับชื่อตัวแปรในภาษา Perl กล่าวคือตัวแปรทุกตัว จะขึ้นต้นด้วยเครื่องหมาย “$” เสมอ นอกจากนี้ตั้งแต่ PHP version 4 เป็นต้นมายังมีวิธีการ ในการอ้างอิงตัวแปรแบบ reference ได้อีกด้วย ทั้งนี้การอ้างอิงตัวแปรแบบ reference จะมีลักษณะเหมือนกับการอ้างอิงด้วย Pointer ในภาษา C คือข้อมูลจะถูกชี้ไปยังตำแหน่งเดียวกัน ในหน่วยความจำ โดยการอ้างอิงในลักษณะนี้จะใช้อ้างอิงถึงตัวแปรตำแหน่งเดียวกันด้วยชื่อมากกว่า 1 ชื่อ ดังตัวอย่างต่อไปนี้
<?php
$A = "Test";
$B = 10;
$C = 10.01;
$ptr = &$A;
echo ("A : $A\n"); // A : Test
echo ("B : $B\n"); // B : 10
echo ("C : $C\n"); // C : 10.01
echo ("ptr : $ptr\n"); // ptr : Test

$ptr="Hello, $ptr";
$C=$B;
$C=200;
echo ("ptr : $ptr\n"); // ptr : Hello, Test
echo ("B : $B\n"); // B : 10.01
echo ("C : $C\n"); // C : 200
echo ("A : $A\n"); // A : Hello, Test
?>
การอ้างอิงตัวแปรแบบ Reference
จากตัวอย่างจะพบว่า $ptr เป็นตัวแปรที่ reference ถึง $A โดยการกำหนด $ptr= &$A; ดังนั้นการเปลี่ยนแปลงใดๆ ก็ตามที่เกิดขึ้นกับตัวแปร $ptr ก็จะเกิดขึ้นกับตัวแปร $A เช่นกัน
ข้อควรระวัง : ชื่อตัวแปรใน PHP มีลักษณะเป็น Case Sensitive เช่นเดียวกันกับตัวแปรในภาษา C ดังนั้น $var, $Var, $vaR จะหมายถึงตัวแปรที่มีชื่อแตกต่างกัน 3 ตัว
ตัวแปรตัวแปร
ในบางกรณีเพื่ออำนวยความสะดวกอาจจะมีการอ้างอิงถึงตัวแปรตัวแปรก็ได้เช่นกัน เช่น กรณีต้องการอ้างอิงถึงตัวแปรชื่อ $test อาจทำได้โดยการอ้างอิงถึง$$a โดย $a มีความเป็น “test” ก็ได้ ดังตัวอย่างต่อไปนี้
<?php
$a= "test;
$$a="variable";
echo ("$a ${$a}"); // ทั้งสองบรรทัดจะได้ผลลัพธ์เหมือนกัน
echo ("$a $test"); //
?>
การอ้างอิงตัวแปรตัวแปร
การอ้างอิงตัวแปร $$a หรือ ${$a} ในตัวอย่างจะมีความหมายเหมือนกับการอ้างอิงด้วย $test โดยตรง ทั้งนี้กรณีที่ต้องการจะอ้างอิงใน expression นั้นให้ใช้ ${$a} เท่านั้น มิเช่นนั้น การตีความผลลัพธ์อาจจะผิดพลาดได้
นอกจากนี้หากต้องการอ้างอิง Array ด้วยตัวแปรตัวแปรนั้น ผู้ใช้จะต้องเขียนเพื่อแยกแยะความสับสน ของการประมวผลด้วย เช่น $$a[1] อาจจะมีความหมายได้ว่า ${$a[1]} หรือ ${$a}[1] ก็ได้ ดังตัวอย่างต่อไปนี้
<?php
$a="HELLO..";
$b[1]="Test";
$Test="5555";
$x="a";
echo ${$x}[1]; // จะได้ผลลัพธ์ เป็น "E" ซึ่งเป็นตัวอักษรที่ 2 ใน "A"
echo ${$b[1]}; // จะได้ผลลัพธ์ เป้น "5555" ซึ่งเป็นค่าของ $Test
?>
การอ้างอิง Array ด้วยตัวแปรตัวแปร
ตัวแปรจากระบบ
ตัวแปรจากระบบคือตัวแปรที่ถูกกำหนดขึ้นโดย Web Server และผ่านต่อมายัง PHP ซึ่งรายละเอียดจะแตกต่างกันไปใน Web Server แต่ละตัว ทั้งนี้เราอาจจะตรวจสอบได้ว่า Web Server ของเรานั้นมีการส่งค่าใดบ้างมาถึง PHP ได้โดยการเรียกใช้ Function phpinfo(); และดูในส่วนของ Web Server ของตน (กรณีเป็น Apache ก็ให้ดูในส่วน Apache กรณีเป็น IIS ก็ให้ดูในส่วน IIS เป็นต้น ) ดังได้แสดงให้ดูแล้ว ในหัวข้อทดสอบการทำงาน ของการติดตั้ง PHP ในที่นี้จะอธิบายตัวแปรต่างๆ กรณีที่ Web Server เป็น Apache ดังนี้ (รายละเอียดเพิ่มเติมสามารถหาอ่านได้จากคู่มือของ Web Server แต่ละระบบที่ท่านใช้อยู่)
Variable
Description
DOCUMENT_ROOTบอกค่าของ Directory ที่เป็น Root ของ Web Server
HTTP_ACCEPTMIME Type ที่ Browser ของ User สามารถรับได้ เช่น image/gif
HTTP_ACCEPT_ENCODINGมาตรฐานการเข้ารหัสที่ Browser ของ User สามารถรับได้เช่น gzip
HTTP_ACCEPT_LANGUAGEภาษาที่ Browser ของ User สามารถรับได้ เช่น th, iso8859-1
HTTP_CONNECTIONลักษณะ Connection เช่น Keep-Alive
HTTP_HOSTชื่อ Host
HTTP_USER_AGENTชื่อ Web Browser ของผู้ใช้ ทั้งนี้หากใช้งานร่วมกับ Function get_browser() และการตั้งค่า browscap.ini จะช่วยให้ทราบว่า Browser ดังกล่าว สามารถทำงานอะไรได้บ้าง
PATHเป็น PATH ของ ระบบ
REMOTE_ADDRIP ของเครื่อง USER
REMOTE_PORTPort ของเครื่อง USER
SCRIPT_FILENAMEpath ที่ไปยังไฟล์ Script ดังกล่าว (สัมพัทธ์กับ DOCUMENT_ROOT)
SERVER_ADDRIP ของเครื่อง SERVER
SERVER_ADMINe-mail ของผู้ดูแล Server
SERVER_NAMEชื่อของ SERVER
SERVER_PORTPORT ของ SERVER (ปกติคือ 80)
SERVER_SIGNATUREรายละเอียดของระบบ Web Server เช่น Apache/1.3.2 at www.host Port 80
SERVER_SOFTWAREชื่อซอฟต์แวร์ระบบ Web Server เช่น Apache/1.3.12 (Unix) PHP/4.0.1pl2
GATEWAY_INTERFACEมาตรฐาน CGI ของระบบ เช่น CGI/1.1
SERVER_PROTOCOLมาตรฐาน HTTP ของ SERVER เช่น HTTP/1.1
REQUEST_METHODวิธีการเรียกใช้ SCRIPT เช่น GET, POST, HEAD, PUT เป็นต้น
QUERY_STRINGเป็น QUERY_STRING ที่เรียกมายังหน้าดังกล่าว เช่น URI เป็น test.php?hello จะได้ว่า QUERY_STRING คือ hello
REQUEST_URIเป็น URI ที่ผู้ใช้เรียกมาถึงหน้าดังกล่าว
SCRIPT_NAMEชื่อของ file ที่ทำงาน SCRIPT ดังกล่าว
ตัวแปรระบบที่ได้รับจาก Web Server
นอกจากนี้ยังมีตัวแปรระบบ Environment ของระบบอีก ซึ่งจะแตกต่างกันออกไป ตามสภาวะของระบบแต่ละระบบทั้งนี้ผู้อ่านสามารถดูได้จาก Environment ของ ระบบปฏิบัติการที่ใช้ หรือ ดูจากผลลัพธ์ของ Function phpinfo(); ก็ได้
ตัวแปรจาก PHP
เป็นข้อมูลที่ตัวแปลภาษา PHP เตรียมให้ผู้ใช้ก่อนเริ่มทำการประมวลผลคำสั่งต่างๆ ทั้งนี้ตัวแปรบางตัว จะมีการกำหนดค่าเริ่มต้นโดยตัวแปลภาษา PHP หรือไม่นั้นขึ้นอยู่กับการตั้งค่าบางตัวใน PHP.INI ด้วย
Variable
Description
argvเป็น Array ของ argument ที่เรียกเข้าสู่ PHP ใน Command-line หรือกรณี GET Method จะแสดง QUERY_STING (ในลักษณะเดียวกันกับภาษา C)
argcแสดงจำนวนของ argument ที่เรียกเข้าสู่ PHP ใน Command-line
PHP_SELFแสดงชื่อ SCRIPT ที่กำลังทำการประมวลผล (ไม่สามารใช้ได้ในการเรียก PHP แบบ Command-line)
HTTP_COOKIE_VARSเป็น Array ของ ข้อมูลที่ใด้รับจาก Web Browser ผ่าน ระบบ cookie (Cookie เป็นข้อมูลเพียงชนิดเดียว ที่ผู้เขียน Web สามารถฝากไว้ที่ Web Browser ของผู้ใช้ได้)
HTTP_GET_VARSเป็น Array ของข้อมูลที่ได้รับผ่าน GET Method ของ Web
HTTP_POST_VARSเป็น Array ของข้อมูลที่ได้รับผ่าน POST Method ของ Web
ตัวแปรระบบที่ได้จาก PHP
ในกรณีของ PHP Version 4.0 นั้น ค่า argv และ argc และเกิดขี้นหรือไม่นั้น ผู้ใช้จะต้องตั้งค่า register_argc_argv=On ใน PHP ด้วย และการใช้ HTTP_*_VARS นั้น จะต้องตั้งค่าtracks_var=On ด้วย (รายละเอียดเพิ่มเติมให้ดูในหัวข้อตัวแปรจาก Web)
ข้อควรระวัง : ชื่อ Variable ที่แสดงดังกล่าวนั้น เมื่อต้องการจะอ้างอืงใน PHP จะต้องอ้างอิงด้วย $ นำหน้าเสมอ เช่น $REMOTE_ADDR เป็นต้น
ตัวแปรจาก Web
ตัวแปรที่ได้รับจากหน้า Web Page นั้นอาจจะได้รับมาจาก URL หรือ Form ผ่าน Get Method, Post Methid หรือ อาจจะมาจาก Cookie ก็ได้ ทั้งนี้ใน PHP จะเรียกตัวแปรที่ได้รับผ่าน Web ว่า GPC ซึ่งเป็นตัวย่อของ Get, Post และ Cookie ตามลำดับ ซึ่งโดยปกติ PHP ก็จะประมวลผล ในการตั้งค่าของข้อมูลตามลำดับเหล่านี้เช่นเดียวกัน ดังนั้นข้อมูลใน Cookie จะมีลำดับความสำคัญสูงสุด และข้อมูลใน Get Method จะมีความสำคัญต่ำสุด (สำหรับผู้ที่ไม่คุ้นเคยกับการทำงานของ Web นั้น Get Method คือการผ่าน Parameter ผ่าน URL เช่น http://www.test.com/test.php?test=5555 เป็นต้น) กรณีนี้ที่ผู้ใช้ต้องจะเปลี่ยนลำดับในการประมวลผลค่าตัวแปรจาก Web นั้น ผู้ใช้อาจจะตั้งค่าที่ gpc_order ใน PHP.INI ก็ได้
การอ้างอิงถึงตัวแปรที่ได้รับผ่าน Web สามารถกระทำได้ 2 วิธีคือการอ้างอิงผ่าน Global Variable หรือ การอ้างอิงผ่าน Array ชื่อ HTTP_*_VARS โดย * คือแหล่งกำเนิดของข้อมูลเช่น GET,POST,COOKIE,SERVER หรือ ENV เป็นต้น (ในกรณีของ PHP Version 4.0 เป็นต้นไปนั้น ผู้ใช้ต้องตั้งค่า register_globals=on ใน PHP.INI ก่อนจึงจะทำการอ้างอิงค่าผ่าน Global Variable ได้) ดังตัวอย่างของ Form ต่อไปนี้
<form method=post>
<input type=text name="myvar">
</form>
<?php
echo $myvar;
// or
echo $HTTP_POST_VARS["myvar"];
?>
จากตัวอย่างจะพบว่าข้อมูลในฟอร์มชื่อ myvar สามารถอ้างอิงได้ด้วย $myvar หรือ $HTTP_POST_VARS["myvar"] (กรณีเป็น post method) หรือ $HTTP_GET_VARS["myvar"] (กรณีเป็น get method) ทั้งนี้การอ้างอิงด้วย HTTP_*_VARS นั้น จะระบุถึงแหล่งกำเนิดข้อมูลที่ถูกต้องเสมอ ซึ่งช่วยลดความผิดพลาดในการประมวลผล และช่วยในแง่ของความปลอดภัยของระบบได้อีกทางหนึ่งด้วย อย่างไรก็ตาม ในบางกรณีก็ทำให้เกิดความยุ่งยากในการเขียนโปรแกรม เพราะในบางกรณี เราก็ต้องการโปรแกรมที่ทำงานได้ทั้ง Get และ Post Method เช่นกรณีของ Search Engine เป็นต้น ดังนั้นผู้ใช้อาจจะใช้งานทั้ง 2 ผสมกันก็ได้ โดยในส่วนที่ต้องการระบุถึงแหล่งกำเนิดของข้อมูลให้ทำการอ้างอิงผ่าน HTTP_*_VARS และกรณีที่ไม่ต้องการระบุ ก็ทำการอ้างอิงผ่าน Global Variable
การใช้ IMAGE SUBMIT
ในบางกรณีผู้เขียน Web อาจจะใช้ Image แทนการใช้ปุ่ม Submit ก็ได้ ซึ่งในกรณีนี้ PHP จะกำหนดตัวแปรเพิ่มขี้นอีก 2 ตัว คือ *_x และ *_y เพื่อใช้แสดงตำแหน่ง X และ Y ของปุ่มที่ถูกกด ดังตัวอย่างต่อไปนี้
<form method=post>
<input type=text name="myvar">
<input type=image src="img.gif" name="bot">
</form>
<?php
echo "($bot_x , $bot_y)";
?>
ผลลัพธ์ที่ได้จาก Script ดังกล่าวจะแสดงคู่ลำดับ (x,y) ที่ผู้ใช้กดที่รูปภาพ เป็นต้น
ข้อแนะนำในการตั้งชื่อตัวแปร
ในการตั้งชื่อตัวแปรนั้นผู้เขียนโปรแกรมควรจะตั้งชื่อตัวแปรโดยใช้ประโยชน์จากระบบ Array เพื่อป้องกันความสับสนของแหล่งกำเนิดข้อมูล เช่น กรณีที่ต้องการสร้างฟอร์ม อาจจะตั้งชื่อตัวแปรต่างๆในฟอร์มเป็น post[ชื่อตัวแปร] เป็นต้น ดังตัวอย่างต่อไปนี้
<form method=post>
<input type=text name="post[username]">
<input type=password name="post[password]">
</form>
<?php
echo "($post[username] , $post[password])";
?>
นอกจากนี้ยังมีข้อควรระวังในการตั้งชื่อคือ ชื่อที่ตั้งไม่สามารถใช้จุดได้ ดังนั้นควรหลีกเลี่ยงใช้ underscore หรือ “_“ แทน
ขอบเขตของตัวแปร
โดยปกตินั้นขอบเขตของตัวแปรใน PHP จะถูกจำกัดอยู่เพียง Block เดียวเท่านั้น อย่างไรก็ตาม Block นี้รวมถึงของเขตจากการ require และ include ด้วย (ดูรายละเอียดเพิ่มเติมของ require และ include ได้จากการสร้าง library และการแทรก php จาก File อื่นๆ) เช่น
<?php
$var = "Hello";
include ("test.inc");
?>
ตัวแปร var จะอยู่ในขอบเขตของ test.inc ด้วยเช่นกัน อย่างไรก็ตามขอบเขตของตัวแปร จะไม่เข้าไปสู่ฟังก์ชันย่อยอื่นๆ (ดูรายละเอียดการเขียน Function เพิ่มเติมในหัวข้อการสร้างฟังก์ชัน ) เช่น
<?php
$var = "Hello"; // Global Variable

MyFunction();

Function MyFunction()
{
     echo $var;
}
?>
จากตัวอย่าง $var ซึ่งเป็น Global Variable จะไม่อยู่ในขอบเขตของ $var ภายใน Function MyFunction ด้วยเหตนี้ ผลลัพธ์ที่ได้จากการทำงานโปรแกรมดังกล่าวจึงไม่มีข้อมูลใดๆ แสดงผลออกมา ดังนั้นในกรณีที่ผู้เขียนต้องการจะอ้างอิงตัวแปร Global Variable ในฟังก์ช้นนั้นสามารถกระทำได้ 2 วิธีคือ การอ้างอิงผ่าน Array ชื่อ $GLOBALS หรือ การประกาศในฟังก็ชันให้ตัวแปรเป็นแบบ Global ก่อนทำการใช้งาน ดังตัวอย่างข้างล่าง MyFunction และ MyFunction1 จะให้ผลลัพธ์ที่เหมือนกันคือ แสดงค่า “Hello”
<?php
$var = "Hello"; // Global Variable

MyFunction();
MyFunction1();

Function MyFunction()
{
     gloabl $var;
     echo $var;
}

Function MyFunction1()
{
     echo $GLOBALS("var");
}

?>
อย่างไรก็ตามในบางกรณีผู้เขียนอาจมิได้ต้องการให้ตัวแปรที่อ้างอิงเป็น GLOBAL เสมอไป หากแต่ต้องการให้อยู่ภายในขอบเขตที่กำหนดและจำค่าไว้ (ในทำนองเดียวกันกับตัวแปร static ในภาษาชั้นสูงอื่นๆ) ดังอาจจะพิจารณาได้จากฟังก์ชัน X และ Y ในตัวอย่างต่อไปนี้
<?php
X(); // การเรียก Function X จะแสดงค่า 5 เสมอ
X(); //
Y(); // แสดงค่า 5
Y(); // แสดงค่า 6
Function X()
{
$var = 5;
echo $var;
$var++;
}
Function Y()
{
static $var = 5;
echo $var;
$var++;
}

?>
ในฟังก็ชัน X จะไม่มีการจำค่าตัวแปร $var ไว้ ดังนั้นการเรียกฟังก์ชัน X แต่ละครั้งตัวแปร $var จึงถูกกำหนดให้เริ่มต้นเป็น 5 ทุกครั้ง ในขณะที่การกำหนดตัวแปร $var ในฟังชัน Y จะเป็นแบบ static จึงมีการจำค่าไว้ตลอดเวลา และจะถูกกำหนดใหม่เฉพาะกรณีที่ตัวแปร $var ไม่เคยถูกกำหนดมาก่อนเท่านั้น

การติดตั้ง PHP

ในการติดตั้ง PHP นั้น ผู้ใช้สามารถ Download PHP รุ่นล่าสุดได้จาก “http://www.php.net” โดยการ Download อาจจะเลือก Download แบบที่เป็น Binary Distribution หรือ Source Code ก็ได้ ทั้งนี้หากเลือก Download แบบที่เป็น Source Code นั้นก่อนการใช้งานผู้ใช้อาจจะต้องทำการตั้งค่า และ Compile ระบบ PHP ก่อน (ซึ่งการแจกจ่ายเป็น Source Code นั้นเป็นระบบที่นิยมทำกันอย่างมาก ในจากแจกจ่ายซอฟต์แวร์บน Unix) แต่หากผู้ใช้เลือกที่จะ Download แบบ Binary ก็สามารถที่จะติดตั้ง แล้วใช้ได้ทันที ในที่นี้จะกล่าวถึงเพียงการติดตั้งบน Windows และ Linux เท่านั้น บนระบบอื่นๆ ผู้ใช้สามารถหารายละเอียดอ่านได้จากคู่มือ PHP ทั่วไป
การติดตั้งบน Windows (IIS,PWS)
บน PWS/IIS 3.0
  1. ให้ผู้ใช้ทำการ Unzip ไฟล์ PHP Binary Distributioin รุ่นล่าสุดลงในเครื่อง (แนะนำให้ไว้ใน Folder “C:\PHP”)
  2. จากนั้นให้ทำการ Run Program “Regedit”
  3. ไปยัง Key ชื่อ/System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap.
  4. เมื่อพบแล้วให้สร้าง Key ใหม่ โดยเลือกที่ Menu Edit -> New -> String Value
  5. ใส่ Extension ที่ต้องการเช่น “.php” หรือ “.phtml”
  6. Double Click ที่ Key ดังกล่าว แล้วระบุชื่อไฟล์ไปยัง php.exe ดังเช่น “c:\php\php.exe %s %s” ทั้งนี้ จะต้องใส่ %s .ให้ครบและถูกต้องตามข้อความดังกล่าว กรณีที่ใช้ PWS 4.0 ซึ่งรองรับการทำงานของ ISAPI 4.0 ขึ้นไปนั้น ผู้ใช้อาจจะเลือกใช้ Key เป็น “c:\php\phpisapi.dll” แทนก็ได้ (Key นี้ไม่สามารถใช้ได้กับ IIS 3.0)
  7. ทำการสร้าง File PHP.INI ใน Directory c:\windows (หรือ c:\winnt กรณีที่เป็น WINNT) โดยอาจจะนำไฟล์ PHP.INI ที่มากับชุดที่ Download มาใช้ก็ได้ ทั้งนี้บางกรณีอาจจะต้องมีการตั้งค่าบางอย่าง เพื่อให้ระบบสามารถทำงานตามต้องการ (ดูในหัวข้อการตั้งค่าระบบ)
  8. Restart Web Server
  9. ทำการทดสอบ (ดูในหัวข้อทดสอบการทำงาน)
กรณีที่เป็น IIS4.0 หรือ IIS 50 ผู้ใช้สามารถอ่านรายละเอียดได้จาก README ซึ่งมากับชุด Binary ของ PHP
การติดตั้งบน Unix / Linux (Apache)
กรณีผู้ใช้งานใช้ Linux ทีเป็น RedHat หรือ Debain นั้น อาจจะเลือก Download PHP ที่เป็น RPM มาแล้วทำการ Install ได้เลย เช่นกรณีไฟล์ที่ Load มาชื่อ php_mod.rpm ก็สามารถติดตั้งได้โดย rpm -i php_mod.rpm เป็นต้น ส่วนกรณีที่ผู้ใช้งานทำงานบน Unix ระบบอื่นๆ หรือต้องการ Compile เองนั้น ในที่นี้จะกล่าวถึงการ Compile เป็น Share Module ของ Apache โดยมีขั้นตอนในการติดตั้งคราวๆ ดังนี้ (การ Compile โปรแกรมเองบน Unix นั้น ผู้ใช้ควรมีความเข้าใจพื้นฐานของระบบ Unix หรือ เคย Compile โปรแกรมบน Unix มาก่อน)
  1. Unpack Apache ด้วยคำสั่ง “gunzip < apache_1.3.X.tar.gz | tar xvf -” (กรณีที่เป็น Linux อาจจะทำได้ในคำสั่งเดียวด้วย “tar zxvf apache_1.3.X.tar.gz” ก็ได้) ทั้งนี้ผู้ใช้สามารถ Download Apache ได้จาก www.apache.com ซึ่งชื่อไฟล์ที่ได้จะแตกต่างกันไป
  2. ให้ทำการติดตั้ง Web Server (Apache) ให้สนับสนุนการทำงานแบบ Share Module ดังนี้
    1. cd apache_1.3.X
    2. ./configure --prefix=/path/to/apache --enabled-shared=max
    3. make
    4. make install
    (รายละเอียดของการติดตั้ง Apache เพิ่มเติมดูได้จาก README.configure หรือ คู่มือการ Install Apache)
  3. Unpack PHP ด้วยคำสั่ง“gunzip < php_4.x.x.tar.gz | tar xvf -” (กรณีที่เป็น Linux อาจจะทำได้ในคำสั่งเดียวด้วย “tar zxvf php_4.x.x.tar.gz” ก็ได้)
  4. ให้ทำการติดตั้ง PHP โดยระบุ Path ไปยัง Apache apxs ดังนี้
    1. cd php_4.x.x
    2. ./configure --with-apxs=/path/to/apache/bin/apxs \
    3.        --with-configure-file-path=/path/to/apache \
    4.        --with-mysql
    5. make
    6. make install
    (กรณีต้องการใช้งาน Extension Module ให้ดู Parameter เพิ่มเติมตอน Configure ได้จาก “./configure --help”)
  5. แก้ไข Config ของ Apache ใน “httpd.conf” หรือ srm.conf โดยให้แทรกบรรทัด
    AddType application/x-httpd-php .php
  6. ทำการแก้ไข PHP.INI แล้วจึง Restart Server
  7. ทำการทดสอบ (ดูในหัวข้อทดสอบการทำงาน)
การตั้งค่าระบบ
(อยู่ระหว่างการ Update)
ทดสอบการทำงาน
การทดสอบการทำงานของ PHP แบบที่ง่ายที่สุดสามารถทำได้โดย ทดลองสร้างหน้า Web Page ที่มี Code PHP แทรกอยู่แบบง่ายๆ ซึ่ง Code ทดสอบที่ดีที่สุดคือ การเรียกใช้ Function phpinfo(); ดังตัวอย่างต่อไปนี้ ทั้งนี้ไฟล์ดังกล่าวควรมีลักษณะดังต่อไปนี้ อย่างไรก็ตามชื่อไฟล์นั้นอาจจะชื่อ test.php หรือ test.php3 หรือ test.phtml ทั้งนี้ขึ้นอยู่กับ extension ที่กำหนดไว้ตอนติดตั้งระบบ นอกจากนี้ phpinfo ยังจะบอกรายละเอียดและค่าต่างๆ ที่ได้ติดตั้งไว้ในระบบด้วย
<?php
phpinfo();
?>
ตัวอย่าง Code PHP สำหรับการทดสอบระบบ