ในภาษา PHP นั้นตัวแปรจะต้องขึ้นต้นด้วย $ ( ดอลล่าซายน์ ) เสมอ แล้วก็ตามด้วยตัวอักษรภาษาอังกฤษหรือ _ (อันเดอร์สกอ) ห้ามขึ้นต้นด้วยตัวอื่นนอกจากนี้ ตัวเลขก็ไม่ได้ ตัวอักษรแปลกๆก็ไม่ได้
อีกอย่างที่เป็นสิ่งน่าจดจำไว้ก็คือ ตัวแปรใน PHP ไม่จำเป็นต้องระบุประเภท และมองอักษรตัวเล็กกับตัวใหญ่เป็นคนละตัว $_init , $_Init
ตัวอย่าง
$__init = 0 ; $init = 0; $init_10 = 10; |
ขอบเขตของตัวแปร
เวลาเราเขียนโปรแกรมเป็นหมื่นๆแสนๆบรรทัด ปัญหาที่จะเจอแน่ๆคือ คิดตั้งชื่อตัวแปรไม่ค่อยจะออก จะเอาชื่อนี้ก็จำได้ว่าตั้งไปแล้ว จะเอาชื่อนั้นก็ตั้งไปแล้วอีก เขาจึงสร้างให้ตัวแปรในแต่ละภาษามีขอบเขตการใช้งาน
ภาษา PHP ตัวแปรที่อยู่นอกฟังก์ชั่น กับตัวแปรที่อยู่ใ่นฟังก์ชั่น ถึงจะเป็นชื่อเดียวกันก็ตาม แต่ก็จะถูกมองว่าเป็นคนละตัว ( จริงๆแล้วคำว่าขอบเขต มันหมายถึงถูกมองว่าเป็นคนละตัวกันนั่นเอง ) ทำให้เราสามารถตั้งชื่อตัวแปร
ชื่อเดียวกันได้โดยไม่ทำให้ค่ามันทับกันไปทับกัน
ตัวอย่าง
$s_username = 'wanchai' ; function get_username() { $s_username = 'somchai'; } |
ถ้าสมมติว่าเราต้องการเข้าใช้งานตัวแปรนอกฟังก์ชั่นจากในฟังก์ชั่นจะทำอย่างไร
ตัวอย่าง
$s_username = 'wanchai' ; function get_username() { global $s_username ; } |
ใช้คำว่า global นำหน้า ตัวแปร $s_username ก็จะถูกมองว่าเป็นตัวแปรตัวเดียวกันกับที่เก็บค่า wanchai ไว้
ตัวแปรแบบ CONSTANT
คนไทยแปลว่าตัวแปรค่าคงที่ ค่าภายในของตัวแปรประเภทนี้จะเปลี่ยนแปลงไม่ได้ ตัว PHP มันจะจับตามองอยู่ตลอดเวลา ไม่ให้เปลี่ยน เป้าหมายของการสร้างตัวแปรแบบนี้ขึ้นมาก็เพื่อลดความผิดพลาด
ในตัวโปรแกรมที่เขียนขึ้นมา การตั้งตัวแปรแบบนี้จะกำหนดผ่านฟังก์ชั่น define() และแนะนำว่าชื่อตัวแปรให้ตั้งเป็นตัวอักษรตัวใหญ่ทั้งหมด เวลามองในโค้ดจะได้จำแนกออกไม่ยาก
define( 'VAT' , 0.007); define( 'VERSION' , 1.0 ); |
เวลาใช้งาน
echo VERSION ; |
ตัวแปรซ้อนตัวแปร
ภาษาอังกฤษเรียกว่า variable variable ดูตัวอย่างก่อนดีกว่า
$s_animal = 'cat' ; $$s_animal = 'dog' |
ตัวในบรรทัดที่สอง ที่มีดอลล่าซายด์สองตัวนั่นแหละเขาเรียก variable variable เวลามองตัวแปรชนิดนี้ท่านจะต้องจินตนาการให้เห็นเป็น $cat เพราะตัวแปร $s_animal มันเก็บ cat ไว้ เมื่อเอาดอลล่า
ซายด์อีกตัวมาต่อข้างหน้ามันก็เป็นตัวแปร $cat ประโยชน์ของมันคือไว้สร้างตัวแปรใหม่ๆ ขณะ runtime
ตัวแปรแบบ Superglobals
ตัวแปรประเภทนี้ PHP จะสร้างขึ้นโดยอัตโนมัติ เมื่อรันหน้าเพจใดๆ และมีขอบเขตครอบจักรวาล สามารถอ้างถึงจากภายในฟังก์ชั่นโดยไม่ต้องระบุ global ไว้ด้านหน้า
$_SERVER
เป็นตัวแปรอะเรย์ที่เก็บค่าสภาพแวดล้อมต่างๆของระบบ ตัวที่ใช้บ่อยก็เห็นจะได้แก่ $_SERVER[‘REMOTE_ADDR’] เก็บค่า IP แอดเดรสของคนที่เข้าเว็บ
$_GET
เป็นตัวแปรอะเรย์เก็บค่าที่ส่งจากฟอร์มที่ระบุ method เป็น get หรือค่า get ที่ส่งมาพร้อม url
http://www.select2web.com/index.php?page=3 |
$_POST
เป็นตัวแปรอะเรย์เก็บค่าที่ส่งจากฟอร์มที่ระบุ method เป็น post
$_COOKIE
เป็นตัวแปรอะเรย์เก็บค่าตัวแปรคุ้กกี้ไว้
$_FILES
เป็นตัวแปรอะเรย์ที่เก็บค่าต่างๆของไฟล์ที่ถูกอัปโหลดมาผ่านฟอร์ม ตัวแปรตัวนี้จะถูกสร้างก็ต่อเมื่อมีการอัปโหลดไฟล์ขึ้นเซิฟเวอร์เท่านั้น
$_ENV
เป็นตัวแปรอะเรย์ที่เก็บค่าสภาพแวดล้อมของระบบ ปัจจุบันตัวแปรตัวนี้เขาไม่นิยมใช้กันแล้ว เขาไปใช้ตัวแปร $_SERVER แทน
ข่าวว่าจะเลิกใช้ใน PHP เวอร์ชั่น 6
$_REQUEST
เป็นตัวแปรอะเรย์ที่เก็บค่า get , post , cookie เขาก็ไม่นิยมใช้แล้วเหมือนกันตัวแปรตัวนี้ เพราะว่าเวลาเราอ่านโค้ดเราจะไม่ทราบว่าตัวแปรตัวนั้นๆ
มันถูกส่งมาผ่านฟอร์มหรือเป็นตัวแปร cookie กันแน่ ใช้ $_GET,$_POST,$_COOKIE ดีว่า เพราะมองปุ๊บเราก็รู้ประเภทของมัน ถ้าผมจำไม่ผิด
ตัวแปร $_REQUEST จะถูกเลิกใช้ใน PHP เวอร์ชั่น 6
$GLOBALS
ตัวแปรตัวนี้เก็บทุกสิ่งทุกอย่างที่กล่าวมาด้านบน เขาจะเลิกใช้ใน PHP เวอร์ชั่น 6 แล้วเหมือนกันครับ
ถ้าท่านอยากทราบว่าภายในตัวแปร $_SERVER มีอะไรบ้าง ให้ใช้คำสั่ง
var_dump( $_SERVER ) ; |
คนที่เขียนโปรแกรมมานานๆ ลองถามตัวเองหน่อยสิครับ ว่าเบสิคเหล่านี้เราลืมไปแล้ว กี่ตัว สำหรับผมเอง ลืมไปอย่างน้อย 3
Leave a Reply