มันมีคำถามๆหนึ่งที่ผมอ่านเจอบ่อยๆ จากน้องๆ ผู้กำลังใคร่ศึกษาการเขียน PHP (ใช้คำว่าใคร่ มันฟังแล้วขนลุกดี) คือคำถามที่ว่า พี่ ผม หนู ดิฉั๊น เดี๊ยน จะเขียนจาวาสคริปต์ ลงไปในไฟล์ PHP ได้ยังไง
คือแบบว่า งงๆ เขียนลงไปแล้ว มันไม่ตีกันเละเทะเหรอ มันไม่เออเร่อเหรอ มันเหี้ยไรก็ไม่รู้
ผมก็เคยเป็นครับความคิดนี้ ตอนผมฝึกเขียน PHP มาได้สักระยะหนึ่ง แต่หลังจากที่นั่งสมาธิติดต่อ 15 วัน ไม่กินไม่ดื่ม และเดินเท้าจากเมืองไทยไปหิมาลัย ไปกลับ 2 รอบ ผมก็เข้าใจ
ผมอยากให้มองอย่างนี้นะครัช (กระแดะมาก) ว่า PHP มันไม่เข้าใจภาษาจาวาสคริปต์หรอก มันเข้าใจแต่ภาษา PHP ของมัน
อืม ผมจะลองเล่าลำดับการประมวลผลบนเซิฟเวอร์ ให้ท่านฟังดูนะ เผื่อเก็ท จริงๆแล้วเรื่องสร้างเว็บด้วย PHP นี่ พระเอกตัวจริงคือ Apache ไอ้นี่แหละเจ้านายใหญ่ บอสใหญ่ ส่วน PHP นั้นเป็นนักแปลภาษาที่ถูกเอ้าซอร์สมา (mySQL เป็นบรรณารักษ์)
ดูโค้ดนี้ ชื่อไฟล์ example.php
<script type="text/javascript"> <?php for($i=0;$i<10;$i++){ echo " document.getElementById('button_".$i."').click(function(){alert('".$i." click')}); "; } ?> </script> <input type="button" id="button_1" value="x" /> <button name="button_2" id="button_2">button 1</button> <button name="button_3" id="button_3">button 1</button> <button name="button_4" id="button_4">button 1</button> |
เมื่อมีการเรียกดูเพจ example.php apache จะถูกปลุกวิญญาณขึ้นมาเพื่อทำหน้าที่เป็นนายทัพผู้เกรียงไกร เจ้านายใหญ่มองดูไฟล์แล้วมันนามสกุล .php พี่แกก็เรียก translator PHP เข้ามาในห้อง และบอกว่า นี่คือสาส์นลับจากฟากข้าศึก ถูกเขียนมาด้วยภาษาทาส ที่ยากต่อการเข้าใจ ในโลกนี้มีแต่เจ้าเท่านั้นที่สามารถ จงทำหน้าที่แห่งเจ้าเถิด
จงจำไว้นะครับว่า PHP มันจะแปลแล้วให้ผลลัพธ์เป็น text ส่งคืนให้ apache คือ apache มันไม่สนใจหรอกว่า PHP จะทำอะไรบ้าง มันต้องการแค่ text เท่านั้น
ทีนี้ PHP มันก็เริ่มแปล PHP มันท่องไว้ในใจเสมอว่า สิ่งที่ต้องแปลคือสิ่งที่อยู่ภายใต้
<?php ?> |
นอกจากนั้นส่งคืนกลับ apache เหมือนเดิม ส่วนที่อยู่ในคำสั่ง echo คือสิ่งที่แปลแล้วที่จะต้องส่งคืนเป็น text ให้กับทาง apache จะเห็นว่า PHP มองสคริปต์ javascript เป็นเพียงแค่ text เท่านั้น ไม่มองมากไปกว่านั้น
เวลาเราเขียนโปรแกรมที่มันปนๆกัน ระหว่างภาษาที่เป็นฝั่ง Server และฝั่ง Client ในสมองให้คิดถึงโค้ดที่มันควรจะเป็นทางฝั่ง Client เป็นหลัก แล้วจะเขียนง่ายมาก จำไว้นะครับว่าโค้ดที่ท่านเห็น มันจะเป็นเพียงแค่ text ธรรมดาๆ ถ้าไปเปิดมันกับ notepad
Eric Jacob says:
16/01/2557 at 16/01/2557
แล้วเหมือนพวก HTML ภายใต้ loop อ่ะครับ