Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 105,323

HOME > PHP > PHP Forum > แนวทางและข้อปฏิบัติในการเขียน PHP Framework แบบ MVC (กรณีศึกษา Yii Framework 2)


 

แนวทางและข้อปฏิบัติในการเขียน PHP Framework แบบ MVC (กรณีศึกษา Yii Framework 2)

 



Topic : 118374



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์




[Models]
Models เป็นศูนย์รวมเกี่ยวกับข้อมูลของระบบ มีกฎตรวจสอบความถูกต้อง และตรรกะเกี่ยวกับระบบของเรา ใช้สำหรับควบคุมและการทำงานของข้อมูลต่างๆ แน่นอนส่วนใหญ่แล้ว Models โค้ดมักเยอะกว่า Controllers มีแนวทางการเขียน ดังนี้
1. ควรประกอบไปด้วย attributes หรือคุณลักษณะของข้อมูล
2. มีส่วนในการตรวจสอบความถูกต้องของข้อมูล
3. ประกอบไปด้วย method ที่เกี่ยวกับ business logic
4. ไม่มีการเขียนเกี่ยวกับ request, session
5. ไม่มีการเขียนส่วนแสดงผล html แน่นอนให้ไปเขียนที่ views แทน
6. หลีกเลี่ยงการมีหลาย scenarios ใน 1 Models

[Views]
Views มีหน้าที่เกี่ยวกับการแสดงผลส่วนหน้าเว็บ ประกอบด้วยการจัดรูปแบบข้อมูล การแสดงผลตาม users ต้องการ มีแนวทางการเขียน ดังนี้
1. ประกอบไปด้วยโค้ดในส่วนของการแสดงผล เช่น HTML และโค้ด PHP สั้นๆ เกี่ยวกับกับการจัดรูปแบบข้อมูล หรือ render ข้อมูล
2. ไม่มีโค้ดเกี่ยวกับการจัดการ การ query ข้อมูลจากฐานข้อมูล ส่วนนี้ให้ไปเขียนที่ Models แทน
3. หลีกเลี่ยงการรับข้อมูลแบบ request เช่น $GET,$POST ส่วนนี้แนะนำให้ไปเขียนที่ Controller แทน
4. ให้อ่านและเรียกคุณลักษณะ (properties) ของโมเดล แต่ให้หลีกเลี่ยงการการแก้ไข
5. ถ้าส่วนแสดงผลมีการทำงานซ้ำๆ กัน ก็ควรแยกไปใช้ layout หรือสร้างและใช้งาน widgets ในการสร้าง views เป็น blocks แทน
6. สร้างและใช้งาน helper class ต่างๆ ในการจัดรูปแบบข้อมูล เช่น Html helper, Url Helper เป็นต้น

[Controllers]
Controllers มีหน้าที่เกี่ยวกับการประมวลผล requests และ responses เมื่อเขียน Controllers แล้วรู้สึกว่าโค้ดมันเริ่มเยอะ ควรแยกโค้ดบางส่วนแยกเป็นคลาสอื่นดีกว่า มีแนวทางการเขียน ดังนี้
1. มีไว้เขียนเกี่ยวกับ request ข้อมูล เช่น get, post, put
2. มีไว้เรียกเมธอดเกี่ยวกับ Models และ เรียก component ต่างๆ
3. มีไว้ส่งข้อมูลต่างๆ ไปให้ views เพื่อนำไปแสดงผล
4. ไม่ควรมีโค้ดการประมวลผลของ Models ถ้ามีให้ไปเขียนที่ Models ดีกว่า
5. หลีกเลี่ยงการเขียน HTML และโค้ดที่เกี่ยวข้องกับการแสดงผลข้อมูล ให้ไปเขียนที่ views ดีกว่า

[Security best practices]
(แนวทางการเขียนเพื่อความปลอดภัยของระบบ) มีแนวทางดังนี้
1. Filter input แน่นอนเราไม่สามารถไว้ใจ input ที่เข้ามาในระบบได้ เราควรเขียนโค้ดเพื่อกรองข้อมูลเหล่านี้โดยใน yii เราสามารถใช้ form validation ได้
2. ระวังเรื่อง SQL injections แน่นอนควรใช้การ prepared statements โดยใน yii มีส่วนจัดการฐานข้อมูลให้อยู่แล้ว ได้แก่ Active Record (มี prepared statements มาพร้อมแล้ว)
และมีในส่วนของ Database Access Objects และ Query Builder (อันนี้ต้องเขียนในส่วน prepared statements ระวังด้วยครับ)
3. ระวัง XSS หรือ cross-site scripting แนวทางการป้องกันมี 2 วิธีง่ายๆ ได้แก่
3.1 ใช้คลาส Html helper และเรียก method encode สำหรับการทุกๆการแสดงผล เช่น <?= \yii\helpers\Html::encode($username) ?>
3.2 ถ้าส่วนเนื้อหามีโค้ด html ติดมาด้วยให้ใช้คลาส HtmlPurifier และเรียกใช้ method process เข้าช่วยครับ เช่น <?= \yii\helpers\HtmlPurifier::process($description) ?>
3.3 ให้เปิดในส่วนของ CSRF เพื่อป้องกันการปลอม request
3.4 อย่าลืมปิดเครื่องมือเกี่ยวกับการ debug เมื่อจะเอาขึ้นใช้งานจริง (กำหนด YII_DEBUG ให้เป็น false)



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-08-14 14:43:34 By : codingthailand View : 561 Reply : 4
 

 

No. 1



โพสกระทู้ ( 1,459 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Blogger

ดีมากเลยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-15 09:47:03 By : num
 


 

No. 2



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

+1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-15 10:29:13 By : NewbiePHP
 

 

No. 3

Guest


เราว่าไม่มีประโยชน์ เพราะคนอ่านรู้เรื่องก็คือพวกที่เข้าใจอยู่แล้ว

มือใหม่มาอ่านมันจะไปรู้เรื่องอะไร ศัพท์เทคนิคเต็มไปหมด

สรุปว่ามีแต่น้ำทั้งนั้น คราวหน้าขอเนื้อๆหน่อยนะ

ป.ล. สำนวนเหมือนแปลมาเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-15 10:40:08 By : ห้ามตอบเกีนวันละ 2 กระทู้
 


 

No. 4



โพสกระทู้ ( 2,932 )
บทความ ( 8 )



สถานะออฟไลน์


+1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-15 15:15:39 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : แนวทางและข้อปฏิบัติในการเขียน PHP Framework แบบ MVC (กรณีศึกษา Yii Framework 2)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





Exchange: Voake, Comcube, ขายอาหารเสริมลดน้ำหนัก, รถมือสอง , รับจดทะเบียนบริษัท,vps | เช่า vps , รับทำเว็บไซต์ รับเขียนโปรแกรม, เครื่องพันพาเลท

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2018 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่