[Laravel] วิธีทำ Helper function ไว้ใช้เอง
ในบทความนี้ผมจะถือว่าทุกคนมีความรู้พื้นฐานเกี่ยวกับ Laravel Framework มาแล้วระดับนึงในเรื่องของโครงสร้างไฟล์ แต่อย่างไรก็ตาม หากสงสัยก็คอมเม้นท์ถามไว้ได้ครับ
มาเริ่มกันเลย
ก่อนอื่นผมจะสร้าง folder ชื่อ Helpers ไว้ภายใต้ folder app ของ framework เพื่อง่ายจ่อการจำแนกไฟล์
จากนั้นสร้างไฟล์ขึ้นมา ตั้งชื่อตามหน้าที่ของ function ด้านในไฟล์นั้น ๆ ในตัวอย่างนี้ผมจะสร้างไฟล์ชื่อว่า NumberHelper.php ไว้จัดการกับตัวเลขต่างๆ
ต่อมาผมจะสร้าง function ชื่อว่า numberInRange ไว้ตรวจเช็คว่าตัวเลขที่ใส่เข้ามามีค่าระหว่าง(between)อีก 2 ตัวเลขหรือไม่ โดยมีเนื้อหาของ function ดังนี้
if (!function_exists('numberInRange')) {
function numberInRange($val, $min, $max) {
return ($val >= $min && $val <= $max);
}
}
หากไม่มี function จึงค่อยประกาศ function
ถัดมาให้เปิดไฟล์ที่ชื่อว่า composer.json ซึ่งอยู่ที่ root ของโปรเจ็กต์
ในไฟล์ เลื่อนลงจนถึงส่วนของ autoload
เพิ่มโค้ดส่วนนี้ลงไป เพื่อบอกให้โหลดโค้ดจากไฟล์ NumberHelper.php มาใช้ด้วย (อย่าลืมใส่ , ต่อท้าย } ก่อนหน้าด้วย)
"files": [
"app/Helpers/NumberHelper.php"
]
จะออกมาเป็นตามรูปต่อมาใช้คำสั่ง composer dumpautoload ใน cmd ที่ root path ของโปรเจ็กต์ เพื่อบอกให้ framework อัพเดทตัวมันเอง
โดยติดโค้ด Helper เข้าไปด้วย ทีนี้ก็ลองทดสอบเรียกใช้ function ที่เพิ่มเข้าไป
แล้วถ้ามี Helper มากกว่า 1 ไฟล์ล่ะ?
ถ้าอิงจากวิธีเดิมถือว่านรกมาก ถ้าเกิดมีเพิ่ม 10 ไฟล์ เราต้องเพิ่มไฟล์ใน composer.json ถึง 10 บรรทัดและหากมีเพิ่มอีกก็ต้องมากรอกโค้ดเองต่อไปเรื่อย ๆ ไม่จบไม่สิ้น เพราะฉะนั้นเราจะมาทำอีกวิธี
ภายใต้ folder Helpers ให้สร้างไฟล์ชื่อว่า autoload.php ขึ้นมาตามนี้
และใส่โค้ดในไฟล์ตามนี้
<?php
$files = glob(__DIR__ . "/*Helper.php");
foreach ($files as $file) {
$filename = (string) $file;
if (strpos($filename, 'Helper.php') !== false) {
require_once $filename;
}
}
ของชื่อไฟล์ที่ตรงกับเงื่อนไข ณ ที่นี้เรากำลังหาไฟล์ที่ลงท้ายด้วย Helper.php จากนั้นมาวน loop เพื่อ require file
ทั้งหมดเข้ามาในโค้ดเรา
จากนี้ไปแก้ที่ไฟล์ composer.json ให้เป็น
"files": [
"app/Helpers/autoload.php"
]
ขอแค่ไฟล์นั้น ๆ ลงท้ายด้วย Helper.php ก็เป็นอันจบครับ
ความคิดเห็น
แสดงความคิดเห็น