| Controllers | เงื่อนไขของ controller |
|---|---|
| Models | เงื่อนไขของ model |
| Views | เงื่อนไขของ view |
| Library | เงื่อนไขของ library |
| Helpers | เงื่อนไขของ helper |
| Hooks | เงื่อนไขของ hook |
| Error Handling | เงื่อนไขของ Error Handling |
subject:Controllers
content:เงื่อนไขของ controllers ดังนี้ - ต้องเก็บอยู่ใน folder "application/controllers/" - ชื่อ file ต้องเป็น "ตัวพิมพ์เล็ก" ทั้งหมด ( lower case ) - ชื่อ class ต้องเหมือน ชื่อ file แต่จะต้องขึ้นต้นด้วย ตัวพิมพ์ใหญ่ ( upper case ) และต้องตามด้วย "_Controller" - ต้องสืบทอดจากคลาส Controller - method ที่ขึ้นต้นด้วย "_" จะไม่สามรถถูกเรียกใช้ผ่าน URL ได้ - method index() จะถูกเรียกใช้โดยอัตโนมัติ ในกรณีที่ URL ไม่กำหนดชื่อ method เอาไว้ - method __call() จะถูกเรียกใช้โดยทันที ในกรณีที่ method ที่เรียกใช้ผ่าน URL ไม่มีอยู่จริง รูปแบบคือ __call ( $method, $arguments ) - private method ไม่สามารถถูกเรียกใช้ผ่าน URL ได้ และนิยมขึ้นต้นด้วย "_"
subject:Models
content:เงื่อนไขของ models ดังนี้ - ต้องเก็บอยู่ใน folder "application/model/" - ชื่อ file ต้องเป็น "ตัวพิมพ์เล็ก" ทั้งหมด ( lower case ) - ชื่อ class ต้องเหมือน ชื่อ file แต่จะต้องขึ้นต้นด้วย ตัวพิมพ์ใหญ่ ( upper case ) และต้องตามด้วย "_Model" - ต้องสืบทอดจากคลาส Model - ถ้าใน class ของ models มี constructor method และมีการเรียกใช้ constructor ของ class แม่ ก็สามารถใช้ตัวแปร $this->db ซึ่งเป็น object ของ Libarry Database ได้ทันที
subject:Views
content:เงื่อนไขของ views - view จะถูกเรียกใช้โดย controllers เท่านั้น โดยการสร้าง object จาก class view และส่ง parameter เป็น ชื่อไฟล์ ของ view ที่ต้องการ เช่น $view = new View ( "filename" ); ( ชื่อไฟล์ ให้กำหนด path ตั้งแต่ application/view/ โดยไม่ต้องมี นามสกุล ของไฟล์ ) - การส่งค่าข้อมูลไปยังหน้า view แสดงผล ทำได้โดยกำหนดผ่าน attribute ของ object view เช่น $view->title = "welcome to bamboolabcode.com"; หรือ $view->set ( "title", "welcome to bamboolabcode.com" ); - การสร้าง Object view นั้น เป็นเหมือนการกำหนดคำสั่งต่างๆลงไปเท่านั้น แต่ยังไม่มีการแสดงผลออกมา ถ้าจะให้มีการแสดงผลออกมาต้องใช้คำสั่ง $view->render ( true );
subject:Library
content:เงื่อนไขของ library ดังนี้ - ต้องเก็บอยู่ใน folder "application/libraries" และไม่สามารถสร้างไว้ใน folder ที่ซ้อนเข้าไปอีกได้ - ชื่อ file ต้องขึ้นต้นด้วย "ตัวพิมพ์ใหญ่" เท่านั้น ( upper case ) - ชื่อ class ต้องเหมือน ชื่อ file และต้องตามด้วย "_Core" - library ที่สร้างขึ้นมา สามารถ extends มาจาก library ที่ kohana มีให้อยู่แล้วได้ด้วย การสืบทอด library ที่ kohana มีให้อยู่แล้ว - ชื่อ file ของ class ลูก จะเหมือน ชื่อ file ของ class แม่ แต่จะต้องขึ้นต้นด้วย "MY_" - ชื่อ class ลูก จะเหมือน ชื่อ class แม่ แต่จะไม่มีคำว่า "_Core"
subject:Helpers
content:เงื่อนไขของ Helpers ดังนี้ - ต้องเก็บอยู่ใน folder "application/helpers/" และไม่สามารถสร้าง folder ซ้อนเข้าไปได้อีก - ชื่อ file ต้องเป็น "ตัวพิมพ์เล็ก" ทั้งหมด ( lower case ) - ชื่อ class ต้องเหมือน ชื่อ file และต้องตามด้วย "_Core" - method ภายใน class ต้องเป็นแบบ static เท่านั้น - helper ที่สร้างขึ้นมา สามารถ extends มาจาก helper ที่ kohana มีให้อยู่แล้วได้ด้วย การสืบทอด helper ที่ kohana มีให้อยู่แล้ว - ชื่อ file ของ class ลูก จะเหมือน ชื่อ file ของ class แม่ แต่จะต้องขึ้นต้นด้วย "MY_" - ชื่อ class ลูก จะเหมือน ชื่อ class แม่ แต่จะไม่มีคำว่า "_Core"
subject:Hooks
content:เกี่ยวกับ Hooks - hook เป็นไฟล์พื้นฐานที่จะถูก include ทันทีเมื่อเริ่มใช้ kohana โดย hooks จะถูก include ภายใน method ของ Kohana::setup() นอกจากนี้ยังมี file ที่ถูก include ทันทีเมื่อใช้ kohana อีก ได้แก่ index.php, core/Bootstrap.php, core/utf8.php, core/Benchmark.php, core/Event.php, core/Kohana.php เงื่อนไขของ Hooks - ต้องเก็บอยู่ใน folder "application/hooks" - ต้องกำหนดค่า $config["enable_hooks"] = true; ( ภายใน file "application/config/config.php" ) เทคนิคการใช้ Hooks อย่างมีประสิทธิภาพ - การที่เรากำหนด $config["enable_hooks"] = true; แล้ว จะทำให้มีการ include ไฟล์ทั้งหมดมา ซึ่งบางครั้งเราก็ไม่ได้ใช้ file hook ทั้งหมดนั้น จึงทำให้สิ้นเปลืองทรัพยากรโดยเปล่าประโยชน์ จึงควรใช้คำสั่ง Event::add ( "system.display", include_hook_file ); ไว้ใน controller ที่เป็น root เพื่อ include hook เท่าที่ต้องการใช้เท่านั้น
subject:Error Handling
content:เงื่อนไขของ Error Handling - ต้องเก็บอยู่ใน folder "application/i18n/en_US/" ( en_US แทนด้วย th_TH หรืออะไรก็ได้ แล้วแต่ภาษาที่เรากำหนด ) - ภายใน file มีตัวแปร $lang เป็นแบบ array จำนวนกี่มิติก็ได้ - ค่าข้อมูล สามารถมี "%s" ได้ คือจะถูกแทนด้วย argument ที่ส่งมา