แสดงบทความที่มีป้ายกำกับ php แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ php แสดงบทความทั้งหมด

วันอังคารที่ 20 ธันวาคม พ.ศ. 2554

MVC กับ ลูกบอล 3 สี


www.anil2u.info ได้เปรียบเทียบการจัดการโค๊ดด้วยระบบ MVC ด้วยลูกบอล 3 สี ซึ่งดูแล้วทำให้เข้าใจระบบ MVC มากขึ้น

ภาพแรก ให้เลือกลูกบอลสีแดงออกมา จะเห็นว่ามีความยุ่งยากพอสมควรเพราะทุกสีคละเคล้าปะปนกันไปหมด เปรียบเทียบกับการเขียนโปรแกรมรวมกันระหว่าง PHP , Database และ HTML

ภาพที่สอง แม้จะแยกลูกบอลสีเขียวออกไปแล้ว แต่โจกทย์คือให้เลือกลูกบอลสีแดงออกมา ก็พบว่ายังมีความยุ่งยากเช่นเดิม แม้ไม่ยากเท่ากับโจทย์แรก แต่ก็สร้างความยุ่งยากไม่น้อย เปรียบเทียบกับระบบเทมเพลท เช่น smarty  โดยแบ่ง Coding กับ Database ไว้ส่วนหนึ่ง และแยก HTML ไว้อีกส่วนหนึ่ง

ส่วนภาพสุดท้าย มีการแยกลูกบอลทั้งสามสีออกจากกัน  เมื่อต้องการลูกบอลสีไหนก็หยิบสีนั้นออกมาโดยทันที เปรียบเทียบกับระบบ MVC ที่มีการแยกการจัดการชัดเจน เช่น CakePHP , CodeIgniter

ที่มาครับ  http://www.anil2u.info/2011/11/understanding-the-basic-need-of-mvc-architecture/

วันพฤหัสบดีที่ 15 ธันวาคม พ.ศ. 2554

[PHP] substr, strlen และ strrpos


วันนี้ชวนมาทบทวน function พื้นฐานใน php ว่าด้วย substr, strlen และ strrpos


หากเราต้องการจะแทนที่อะไรสักอย่างในตำแหน่งใดตำแหน่งหนึ่ง ด้วยเครื่องหมาย xxx หรือ ****
เช่น ผู้ใช้มีรหัสผ่านชุดหนึ่ง 123456789 เราอยากจะแทนที่ 3 ตำแหน่งสุดท้ายอันได้แก่ 789 ด้วยเครื่องหมาย xxx หรือ ***  จะทำอย่างไร?

พระเอกในโจกทย์นี้คือ substr + strlen
substr ( string, start, length ); //ใช้ดึงข้อความตั้งแต่ตำแหน่งที่กำหนด ตามจำนวนที่กำหนด
ส่วน strlen  strlen ( string ); //ใช้นับจำนวนอักษรทั้งหมด

ตัวอย่างการใช้งาน
echo substr($_POST['password'],0,strlen($_POST['password'])-3)."***";

ผลลัพธ์ 123456***


แต่ถ้าจะแทนที่ชุดอักษรที่มีเครื่องหมายคั่นระหว่างเช่น ตัวเลขไอพี  125.115.620 เราต้องการจะแทนตัวเลขชุดสุดท้าย ด้วยเครื่องหมาย xxx ให้ได้ผลลัพธ์ 125.115.xxx
ให้ใช้ substr + strrpos 
strrpos ( string, find, start ); //ใช้ค้นหาข้อความที่กำหนดใน string จากหลังมาหน้า โดยจะคืนค่าตำแหน่งแรกที่พบ หรือคืนค่า false ถ้าไม่พบ ( การค้นหานี้คำนึงถึงตัวพิมพ์เล็กพิมพ์ใหญ่ ) 

ตัวอย่างการใช้งาน


$ip=" 125.115.620";
echo substr($ip,0,strrpos($ip,'.')).".xxx"
ผลลัพทธ์  125.115.xxx