PHP เก็บชื่อตัวแปรมาใช้งาน

ขึ้นหัวข้อเรื่องแบบนี้แล้วก็ให้รู้สึกแปลกๆ เพราะปกติแล้วเราก็ต้องรู้ชื่อของตัวแปรอยู่แล้วสิ ท่านผู้อ่านก็คงคิดว่าการแสดงชื่อมันออกมาหรือเอาไปใช้อย่างอื่นก็ไม่ได้ยุ่งยากอะไรนี่? นั่นสิครับผมก็คิดแบบนั้น แล้วเรื่องนี้มันยังไงกัน

หากว่าบางครั้งเราอ้างอิงตัวแปรมาแบบไม่รู้ชื่อของมันตรงๆ เพราะมันอ้างอิงมาจาก Function อื่น หรือเราต้องการเขียน Function ที่นำเข้าตัวแปรมาแล้วต้องการแสดงชื่อตัวแปรนั้นๆไว้ด้วยเนี่ยจะวุ่นไปอีกแบบ แล้วก็แปลกอยู่อีกว่า PHP ก็ไม่มีฟังก์ชั่นแบบนี้ให้โดยตรง ทั้งที่น่าจะได้ใช้บ่อยอยู่

จนกระทั่งมีคนหัวใสเค้าหาวิธีไปเอาชื่อมันมาทางอ้อมด้วยการใช้ foreach ที่อ้างอิงแบบ $key=>$value ไปวนลูปเทียบดูในตัวแปรของระบบที่ชื่อ $GLOBALS เทียบดูว่าตัวแปรไหนมันมีค่าเหมือนกันกับที่เรากำลังอยากได้ชื่อเป๊ะๆ (ที่ว่าเป๊ะๆเค้าก็เลยใช้ operator พิเศษเป็นเครื่องหมายเท่ากับเรียงต่อกันสามตัว หากพบก็นำเอาค่าออกมาแล้ว RETURN ออกมาใช้

เท่าที่เห็นมามีคนเขียนฟังก์ชั่นตามคอนเซ็ปต์ที่ว่านี้อยู่หลายแบบ แต่แบบที่แสดงอยู่นี้คุณ Jeremy Ruten เค้าตอบเอาไว้ใน stackoverflow เป็นฟังก์ชั่นที่ดูสั้นและเข้าใจง่ายแบบ clean code ครับเลยนำมาฝากพร้อม reference url เรียบร้อย สงสัยก็ไปค้นกันต่อได้

1
2
3
4
5
6
7
<?php
function getvarname($var) {
   foreach($GLOBALS as $var_name => $value)
   if ($value === $var) return $var_name;
      return false;
}
?>

reference : How to get a variable name as a string in PHP?
url : https://stackoverflow.com/questions/255312/how-to-get-a-variable-name-as-a-string-in-php

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

0 ความคิดเห็น