รวม 19 Extensions ของ Yii Framework 2 ที่น่าใช้

1. Bx Slider Widget for Yii 2
https://github.com/yii2mod/yii2-bx-slider

2. Star Rating Widget for Yii 2
https://github.com/yii2mod/yii2-star-rating

3. jQuery countdown widget for Yii2
https://github.com/russ666/yii2-countdown

4. Sweet Alert Widget for Yii 2
https://github.com/yii2mod/yii2-sweet-alert

5. Yii 2 Tree (jsTree)
https://github.com/arogachev/yii2-tree

6. Infinite AJAX scrolling for Yii2
https://github.com/kop/yii2-scroll-pager

7. Yii2 Toastr Notification
https://github.com/odai-alali/yii2-toastr

8. Yii 2 widget for jQuery Timepicker Addon
https://github.com/janisto/yii2-timepicker

9. DropzoneJs Extention for Yii2
https://github.com/perminder-klair/yii2-dropzone

10. Yii2 extension for Mobile-Detect library
https://github.com/alexandernst/yii2-device-detect

11. Yii 2 imagine extension
https://github.com/yiisoft/yii2-imagine

12. Google Maps API library for Yii2
https://github.com/2amigos/yii2-google-maps-library

13. Bootstrap DatePicker Widget for Yii2
https://github.com/2amigos/yii2-date-picker-widget

14. QrCodes for Yii2
https://github.com/2amigos/yii2-qrcode-helper

15. Integration of materializecss into Yii2
https://github.com/MacGyer/yii2-materializecss

16. SB Admin Theme for Yii2
https://github.com/p2made/yii2-sb-admin-theme

17. Yii2 extension to generate auto number
https://github.com/mdmsoft/yii2-autonumber

18. LinkPager widgets for Yii Framework 2.0
https://github.com/phpyii/yii2-widget-linkpager

19. Asset Bundle for Yii2 with Socicon
https://github.com/rmrevin/yii2-socicon

แนะนำ Guzzle สำหรับทำ RESTful APIs (PHP)

สำหรับคนที่เขียน PHP อยากเขียนต่อกับ RESTful APIs หรือ Web Services แนะนำตัวนี้ครับ “Guzzle”

 

 

รายละเอียด
http://goo.gl/BKjZXv

– Guzzle เป็น PHP HTTP client ที่ใช้สำหรับส่ง HTTP requests และเชื่อมต่อกับ web services ครับ

– สามารถดึงข้อมูล เพิ่ม แก้ไข ลบ หรืออัพโหลดไฟล์ไปที่ web services ได้ง่ายมากเพียงใช้โค้ดไม่กี่บรรทัด

– สามารถเขียนเชื่อมกับ APIs เจ้าดังๆ ได้ไม่ว่าจะเป็น Twitter, Facebook, GitHub ได้สบายๆ

แน่นอนมันติดตั้งผ่าน Composer เราสามารถใช้ได้ทั้ง เขียน PHP แบบปกติ หรือใช้ PHP framework ก็ได้

 

ถ้าง่ายหน่อยสำหรับคนใช้ Yii Framework 2 ดูที่นี่
https://goo.gl/PLq6gg

สำหรับคนใช้ Laravel 5 ดูที่นี่
https://goo.gl/4kq0PT

ลองใช้ดูกันได้ครับ

Yii 2.0.8 มีอะไร update สำคัญๆ บ้าง

  • ปรับปรุงความเข้ากันได้กับ PHP 7
  • เพิ่ม method andFilterCompare() สำหรับกรองข้อมูลในคอลัมน์ของ GridView ให้ง่ายขึ้น ใครใช้ Yii 1.1 อยู่น่าจะคุ้นเคยเป็นอย่างดี
  • เพิ่ม comments ให้กับตาราง และคอลัมน์ ในฐานข้อมูล
  • เมื่อเราอัพโหลดไฟล์เรามักลืมระบุ enctype ให้กับฟอร์ม ตอนนี้ไม่ลืมแน่นอน เพราะ Yii จัดการเพิ่ม enctype ให้เราแบบ Auto แล้ว ไม่ต้องระบุครับ
  • เราสามารถระบุเครื่องหมายดอกจันทร์ (*) เพื่อตรวจสอบ mimeTypes แบบกลุ่มได้เช่น image/* หมายถึง image/jpeg, image/png เป็นต้น
  • สามารถตรวจสอบความถูกต้อง (Validate) เวลาได้แล้ว โดยระบุ property ชื่อว่า type กำหนดเป็น TYPE_DATETIME หรือ TYPE_TIME ไม่ต้องเขียนเช็คเองแล้ว
  • เรื่องความปลอดภัย ส่วนใหญ่อัพเดทตั้งแต่ 2.0.7 แล้วครับ สำหรับ 2.0.8 จะเป็นการปรับปรุงประสิทธิภาพเสียมากกว่า เช่น ปรับปรุง Random Number Generator (RNG) ให้ดีขึ้น
  • ล่าสุด มีการปรับปรุง MongoDB extension ใครใช้อยู่ก็ update กันได้เลย
    อ่านเพิ่มเติมได้ที่
    http://goo.gl/FGZ97k

แนะนำ WYSIWYG editor ใช้กับ Yii2 Framework

สำหรับใครที่กำลังมองหา WYSIWYG editor ของ Yii2 Framework แนะนำตัวนี้เลยครับ yii2-redactor คุณสมบัติหลักๆ ที่ชอบคือมันสวย ใช้ง่าย มีระบบจัดการรูปภาพ และจัดการไฟล์มาให้เรียบร้อย!! ลิงก์ตามนี้ https://github.com/yiidoc/yii2-redactor

 

1. หลังจากติดตั้งเสร็จ เปิดไฟล์ common\config\main.php ขึ้นมาแล้วเพิ่ม module ครับ

หมายเหตุ ตรง uploadDir และ uploadUrl ใส่เป็นเว็บของตัวเองนะครับ

2. ไปที่ View ของโปรเจคเรา สมมติว่าเป็นไฟล์ _form.php แล้วแทรกโค้ด ดังนี้

เรียบร้อย!! ถ้าอยากรู้ว่ามี options อะไรเพิ่มเติมอีกก็ตามไปได้ที่เว็บ http://imperavi.com/redactor

รวม 14 บทความความรู้เกี่ยวกับ Yii Framework 2 เขียนโดย Jeff Reifman

รวม 14 บทความความรู้เกี่ยวกับ Yii Framework 2 เขียนโดย Jeff Reifman ครับ ผมลองเรียงลำดับเนื้อหาให้เรียบร้อย นี่ถ้า print มาอ่านคงได้เป็นเล่มเลย

1. Programming with Yii2: Getting Started
http://goo.gl/FgqVJh

2. Programming With Yii2: Exploring MVC, Forms and Layouts
http://goo.gl/ZSTjGM

3. Programming With Yii2: Integrating User Registration
http://goo.gl/wmByJr

4. Programming With Yii2: Localization With I18n
http://goo.gl/w6vxC1

5. Programming With Yii2: User Access Controls
http://goo.gl/RcPrZj

6. Programming With Yii2: Sluggable Behavior
http://goo.gl/5w2z4S

7. Programming With Yii2: Blameable Behaviors
http://goo.gl/pPrsuQ

8. Programming With Yii2: Timestamp Behavior
http://goo.gl/7rGWmZ

9. Programming With Yii2: Validations
http://goo.gl/Hi6hwN

10. Programming With Yii2: Specialized Validations
http://goo.gl/dlkWhd

11. Programming With Yii2: Working With Asset Bundles
http://goo.gl/UYW4zX

12. Programming With Yii2: Rich Text Input With Redactor
http://goo.gl/IIpKze

13. Programming With Yii2: Working With the Database and Active Record
http://goo.gl/1pl5MD

14. Programming With Yii2: AuthClient Integration With Twitter, Google and Other Networks
http://goo.gl/urxNYJ

แนวทางที่ดีในการเขียน PHP Framework แบบ MVC

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


[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 สำหรับการทุกๆการแสดงผล เช่น

3.2 ถ้าส่วนเนื้อหามีโค้ด html ติดมาด้วยให้ใช้คลาส HtmlPurifier และเรียกใช้ method process เข้าช่วยครับ เช่น

3.3 ให้เปิดในส่วนของ CSRF เพื่อป้องกันการปลอม request
3.4 อย่าลืมปิดเครื่องมือเกี่ยวกับการ debug เมื่อจะเอาขึ้นใช้งานจริง (กำหนด YII_DEBUG ให้เป็น false)

 

เป็นไงกันบ้างครับ ลองเอาไปใช้ดูได้นะครับ 🙂