Tag: PHP
ส่งอีเมลด้วย SendGrid
การส่งอีเมลเป็นหนึ่งในสิ่งที่เราทำกันบ่อยๆ บนเว็บไซต์ ซึ่งท่าที่โปรแกรมเมอร์ PHP ชาวไทยใช้กันบ่อยๆ ก็คือเอา SMTP ของ Gmail มาใช่ส่งเมลผ่าน SMTP ด้วยไลบรารี่อย่าง PHPMailer ปัญหาคืออีเมลที่ส่งออกไป มันจะเป็นแอดเดรสของ Gmail ที่เราเอา SMTP มาใช้ส่ง ซึ่งความน่าเชื่อถือมันต่ำมาก และในบางครั้งที่เราต้องส่งอีเมลจำนวนมาก ก็อาจจะติดลิมิตที่ 500 อีเมลต่อวัน และไม่สามารถขยายเพิ่มได้ตามความต้องการ (เว้นแต่จะขยันมานั่งเปลี่ยน SMTP เองทุกครั้งที่มันเต็ม)
array_map() ใน PHP
array_map() เป็นฟังก์ชันที่เอาไว้รับอาเรย์เข้าไป เอามาประมวลผล value ของอาเรย์ แล้วคืนค่ากลับออกมาเป็นอาเรย์ตัวใหม่ โดยค่า index หรือ key ของอาเรย์นั้นจะคงเดิมเหมือนกับในอาเรย์ต้นฉบับ
การทำ Routing ใน PHP ด้วย AltoRouter
โดยปกติแล้ว PHP จะทำงานร่วมกับเว็บเซิร์ฟเวอร์อย่าง Apache หรือ Nginx ที่เราสามารถเรียกใช้ไฟล์ PHP ผ่าน URL โดยตรงได้เลย เช่นเราอยากเรียกไฟล์ post.php ขึ้นมาทำงาน ก็สามารถเรียกผ่าน URL https://domain.com/post.php ตรงๆ ได้เลย แต่พอเมื่อเราโดดไปเขียนภาษาอื่น ไม่ว่าจะ ASP.NET MVC หรือของยอดนิยมในตอนนี้อย่าง Node.js เราจะเจอวิธีการกำหนด URL อีกแบบ ที่เราต้องไปกำหนดแพทเทิร์นของ URL ระบุว่า URL มาในลักษณะนี้จะเรียกหน้าไหนมาแสดง เราเรียกวิธีกำหนด URL แบบนี้ว่าการทำ routing เรามักจะเห็นการทำ routing แบบนี้เมื่อเราใช้เฟรมเวิร์กสักตัวในการสร้างเว็บไซต์ แต่จริงๆ แล้วมันก็มีเป็นไลบรารี่สำเร็จรูปให้เราติดตั้งใช้งานได้เช่นกันในกรณีที่เราอยากทำโปรเจ็กท์เล็กๆ แบบไม่ใช้งานเฟรมเวิร์ก
4 ฟีเจอร์ใหม่ใน PHP 7.4 ที่ช่วยให้เขียนโค้ดสะดวกขึ้น
ในขณะที่เรายังหาทางแก้ปัญหา call to undefined function: mysql_pconnect() กันอยู่ PHP 7.4 รุ่นเสถียรก็ได้ปล่อยออกมาให้เราได้ใช้งานกันแล้วเมื่อวันที่ 28 พฤศจิกายนที่ผ่านมา ฟีเจอร์หลายๆ อย่างใน PHP 7.4 จะเน้นไปที่การทำให้เราสามารถเขียน PHP ได้สะดวกขึ้น โค้ดกระชับและอ่านง่ายขึ้น และมีฟีเจอร์ด้าน performance เพิ่มมาด้วยเช่นกัน (ส่วน JIT ต้องรอ PHP8 เหมือนเดิมนะ) วันนี้เราจะพาไปดูกันว่าฟีเจอร์ใหม่ๆ ที่น่าสนใจใน PHP 7.4 นั้นมีอะไรบ้าง
การเชื่อมต่อฐานข้อมูล MySQL บน PHP
Fatal error: Uncaught Error: Call to undefined function mysql_connect() PHP7 ได้กล่าวไว้ ถ้าคุณเพิ่งจะหัดเขียน PHP แล้วเจอข้อผิดพลาดข้างบน นั่นเป็นเพราะว่าตั้งแต่ PHP 7.0 เป็นต้นมา (ถ้าไม่มีเหตุจำเป็นจริงๆ ไม่มีใครใช้ PHP5 กันอีกแล้วเนอะ) ส่วนขยาย mysql ได้ถูกนำออกไปจาก PHP โดยสมบูรณ์ ทำให้ฟังก์ชันกลุ่ม mysql ทั้งหมด เช่น mysql_connect(), mysql_pconnect(), mysql_query(), mysql_fetch_assoc() และอีกสารพัด จะไม่สามารถใช้งานได้แล้วนั่นเอง แต่อย่าเพิ่งตกใจไป PHP ได้เอาส่วนเสริมตัวใหม่สำหรับ MySQL เข้ามาแทน นั่นคือ mysqli หรือ MySQL Improved ที่ compatible กับโค้ดเดิมเกือบจะ 100% เพียงแค่เปลี่ยนชื่อฟังก์ชันจาก mysql_xxx เป็น mysqli_xxx […]
การใช้ PSR-4 autoload ใน Composer
ข้อดีอย่างหนึ่งในการเขียนการฟีเจอร์ต่างๆ แยกมาเป็นคลาสคลาสหนึ่ง คือเราสามารถเก็บค่าทุกค่า ฟังก์ชันทุกฟังก์ชัน เอาไว้แค่ในตัวมันได้โดยไม่ต้องกลัวว่ามันจะไปตีกับค่าเดียวกันหรือฟังก์ชันเดียวกัน (จริงๆ มันเรียกว่า property กับ method) ที่อยู่ในคลาสอื่น หรือที่เขาเรียกกันว่า encapsulation ตัวอย่างการทำ encapsulation ที่เราเคยเขียนไว้ คือการใช้ ACF ทำบล็อก Gutenberg แต่ข้อเสียอย่างหนึ่งของการทำ encapsulation นั่นคือเราต้องมานั่ง include ไฟล์คลาสจำนวนมาก (ยิ่งเขียนเยอะยิ่ง include เยอะ) ซึ่งถึงจุดหนึ่งแล้วมันจะกลายเป็นเรื่องน่ารำคาญขึ้นมาแทน แต่เราก็มีทางออก คือการทำ PSR-4 Autoloading
การส่งค่าจาก PHP ไปหา JavaScript ใน WordPress
เวลาเราทำเว็บด้วย WordPress และมีการต้องมาเกี่ยวข้องกับการเขียน JavaScript ในหลายครั้งจะต้องมีการเรียกใช้ค่าจากฝั่ง PHP เนื่องด้วย PHP และ JavaScript นั้นทำงานคนละที่กัน (PHP ทำงานบนเซิร์ฟเวอร์ และ JavaScript ทำงานฝั่งเบราเซอร์) ทำให้เราจะส่งค่าจาก PHP ไปให้ JavaScript โดยตรงไม่ได้ ทางออกที่เจอกันบ่อยๆ คือให้ PHP ทำการ echo ค่านั้นๆ ออกมาแล้ว JavaScript จึงนำเอาไปใช้ ทีนี้ปัญหาอยู่ที่ในไฟล์ .js นั้นเราไม่สามารถแทรกคำสั่ง PHP ลงไปได้ ดังนั้นท่าที่เราเจอบ่อยที่สุดท่าหนึ่งก็คือการเขียน JS แทรกลงไปในไฟล์เท็มเพลต และ echo ค่าจาก PHP ลงไปตรงนั้น วิธีนี้แม้จะทำให้ได้ผลลัพธ์ที่ต้องการได้ แต่ก็ทำให้โค้ดรก และต้องเอาโค้ด JS มาปะปนอยู่ในไฟล์เท็มเพลตด้วย