ACL ของ CakePHP สามารถตรวจสอบได้ว่า ARO (~ user หรือ role ของ user) สามารถเข้าไปใช้ ACO (หน้าเว็บ, action ต่างๆ เช่น books/index, books/delete) ได้หรือไม่. อย่างไรก็ตาม ACL ก็ไม่ได้หามาให้เราเองว่าเรากำลังจะตรวจสอบ user ชื่ออะไร หรือว่า actionอะไร. คำสั่งที่เราใช้ ACL จริงๆคือ
$this->Acl->check($user, $page, 'read');
จาก code ข้างบนก็พอบอกได้ว่า $user กับ $page นี่เราต้องหามาเอง. $user ควรจะได้มาจาก Authentication module ที่ผมจะเขียนถึงในต้องต่อไป แต่ว่า $page จากที่อ่าน http://bakery.cakephp.org/articles/view/real-world-access-control สามารถเอามาได้ตาม code ข้างล่าง
$this->set('action', $this->name.DS.$this->action);
เพื่อให้เห็นภาพมากขึ้นลองดูทั้ง controller น่าจะดีกว่า
set('action', $this->name.DS.$this->action);
}
}
?>
แล้วก็ view ด้วย
This action:
ผลออกมาก็จะได้แบบนี้
การเขียนที่ดีควรจะทีสรุปหน่อยใช่มั้ย ถึงแม้ผมจะเอียนกับงานเขียนบางอย่างจนจะอ้วก แต่ผมก็จะสรุปว่า คำสั่ง $this->name.DS.$this->action เอาไว้ใช้หาได้ว่า controller ใดๆ ที่จริงแล้วคือ page ไหน (โดยตัด URL ออก) หรือจะคิดว่าเป็น action path ก็น่าจะได้ เช่น books/index เป็นต้น พอได้ข้อมูลนี้มาแล้วเราก็เอาไว้ใช้ check ใน ACL ได้.

ถามจริงๆ ทีนึงสิ
CakePHP นี่มันใช้งานได้ดี+สะดวก เท่าพวก MVC ของ Python/Ruby จริงๆ เหรอ?
ถ้าไม่นับว่าแก้ปัญหาเรื่องหา Host อะไรคือข้อดีหรือจุดเด่น?
Comment โดย BLeAm — 10 มีนาคม 2008 @ 23:02
ผมตอบได้แต่ความรู้สึกนะครับ ไม่ได้มีการทดลองเปรียบเทีนบที่ดีอะไร. ผมว่า CakePHP ง่ายกว่า Turbogears (ส่วน django นี่แค่เล่นครั้งแรกผมก็ถอดใจแล้ว) และ Rails นะครับ. ออกแบบมาได้น่าใช้พอดิบพอดี. *แต่ก่อน* รู้สึกว่าใช้พวก authentication + access control และ L10N ยากกว่า Turbogears แต่ว่าพอ CakePHP ออก 1.2 มาแล้ว ก็แอบรู้สึกว่าชอบ ACL + Auth ของ CakePHP มากกว่า Turbogears อีก.
สรุปว่าผมคิดว่า CakePHP ใช้ง่าย เรียนไว เข้าใจระบบง่าย แก้ไขปรับปรุป ปรับแต่งได้ง่าย *กว่า* framework ที่เคยลองมา ไม่ว่าจะเป็น framework ที่ใช้ Ruby หรือ Python ก็ตาม. อย่างไรก็ตาม CakePHP ก็น่าจะมีข้อด้อยบ้างเรื่องประสิทธิภาพในการทำงาน และภาษา PHP เอง. เวลาใช้ PHP ปกติมันก็มี function ครบตามที่อยากใช้ดี แต่พิมพ์ยาวสักหน่อย ถ้าเทียบกับ Ruby และ Python.
Comment โดย वीर — 11 มีนาคม 2008 @ 04:47