แนะนำ tutorials สำหรับการเขียนเว็บ PHP MVC หน่อยได้ไหมครับ พอดีเพิ่งเริ่มเลย งงมากๆ
อย่างแรก ถ้าเคยเขียน php ดิบๆธรรมดาๆมาก่อน อย่าไปยึดติดกับโครงสร้าง folder
ให้โยนความทรงจำเก่าๆเกี่ยวกับโครงสร้าง folder ทิ้งไปเลย
แล้วดูโครงสร้างของ controller ของ framework แต่ละตัวแทน (แต่ละตัวอาจไม่เหมือนกัน เช่น CI กับ CAKE)
MVC Cคือ controller, M คือ model, V คือ views
หากอธิบายง่ายๆ views ก็เปรียบเหมือนระบบ template นั่นล่ะ
mvc จะแยกโปรแกรมกับการแสดงผลออกจากกันอย่างชัดเจนมาก.
controller มักจะอ้างอิงตาม path เช่น http://localhost/accounts/ <--controller อาจชื่อไฟล์ accounts.php เก็บอยู่ใน folder controllers
http://localhost/accounts/register <-- controller อาจชื่อ accounts และ method อาจชื่อ register เป็นต้น.
จะเอาง่ายๆ ให้ลองใช้แค่ C+V ไปก่อน คือประมวลผลมันใน C แล้วส่งค่าไปแสดงที่ V
แล้วเดี๋ยวเรื่อง M (ตัวช่วยที่สำคัญ ทำให้โค้ดใน C สั้นลง แยกการทำงานได้ เรียกใช้ซ้ำได้สะดวก) ค่อยมาศึกษาทีหลัง
Date :
2012-03-12 23:34:19
By :
mr.v
ขอบคุณครับ คุณ วี อธิบายให้ได้แนวคิด ขึ้นมามากเลยครับ
การเขียนแบบ MVC นั้น ต้องอาศัยเทคนิค ModWriter ด้วยหรือเปล่าครับ?
คือจำเป็นมากไหมครับ?
framework ที่ผมไปลองมา ก็ Codeignator ตอนลองเริ่มๆ ก็พอได้แต่ไม่เข้าใจหลักการเขียนเลยครับ
ว่าถ้าหากเกิดมาเขียนเองจะเวิร์คไหม?
บางคนก็มองว่าของดีมีแล้ว ไม่จำเป็นต้องไปเขียนเอง เอาเป็นว่าภาพรวมเข้าใจแล้ว
แต่สงสัย ... เพียงจะเขียนยังไงให้เหมือนเขาเท่านั้นเองครับ
เพิ่มอีกนิดนะครับ ในส่วนของ การเขียน Model ด้วยที่คุณ วี กล่าวถึง ว่าสามารถเรียกใช้ซ้ำได้เรื่อยๆ
ขอบคุณนะครับ ที่แนะนำ
Date :
2012-03-13 14:10:35
By :
ALTELMA
mod rewrite ไม่จำเป็นครับ แต่มีก็ดี
Date :
2012-03-13 23:19:31
By :
mr.v
model ก็คือผู้ช่วยที่จะทำให้โค้ดสั้นและง่ายขึ้น
ตัวอย่าง
ผมจะทำหน้า upload ภาพพร้อมให้กรอกข้อมูล
ถ้าเขียนแบบเก่าๆ ก็คือจะ insert ทีก็ต้องมาเขียน upload เสร็จแล้วค่อยเอา path+file ยัดเข้า db
จะ update ก็ต้องตรวจว่าอัพไฟล์ใหม่มั้ย ถ้าอัพใหม่ก็เขียนลบ แล้วเขียนอัพโหลด แล้วค่อย update
เหนื่อยแย่เลยครับ
+++++
ถ้าใช้ model
ผมก็แค่สร้าง upload_model
method ::...
add(), edit($id), delete($id)
upload(), delete_file($file)
ใน upload ก็เขียนแค่อัพโหลดแล้ว return false ถ้าไม่สำเร็จ หรือ return ชื่อไฟล์ถ้าอัพสำเร็จ
ใน delete_file ก็รับค่า path file แล้วเอามาลบไฟล์เท่านั้น ลบสำเร็จส่ง return true ถ้าไม่ส่ง return false
ถ้าตอนอัพโหลดไฟล์ใหม่ ก็เรียกจาก controller ไปครับ $this->upload_model->add();
ใน add() ก็เรียก $this->upload() แล้วรอรับค่า return ว่ามีชื่อไฟล์หรือ === false ถ้ามีชื่อไฟล์ก็ค่อย insert
ตอนแก้ไขไฟล์ ก็เรียกจาก controller ไปครับ $this->upload_model->edit($id);
ใน edit($id) ก็ตรวจว่ามีอัพโหลดไฟล์ใหม่มั้ย ถ้าอัพใหม่ ก็เอาค่า path file ส่งไป $this->delete_file($row['file']);
ถ้าลบสำเร็จ (return true) ก็อัพโหลด โดยเรียก $this->upload() แล้วรอรับ return ชื่อไฟล์ เอาไป update
ตอนลบ ก็เรียก $this->upload_model->delete($id);
ใน delete($id) ก็เอาค่า path file ส่งไป $this->delete_file($row['file']);
ถ้าลบสำเร็จก็ค่อยลบออกจาก db.
จากตัวอย่างจะเห็นว่า upload() ถูกเรียกใช้ 2 หน โดยไม่ต้องเขียนใหม่ แค่เรียกใช้ซ้ำเท่านั้น สั้นและง่ายกว่ากันมาก
เรียกได้ว่า model นี่ก้คือผู้ช่วยพระเอก ที่ทำงานหนักอยู่เบื้องหลังโดยแท้
Date :
2012-03-13 23:30:46
By :
mr.v
งั้นคงต้องลองกันซักตั้งล่ะครับ
Date :
2012-03-14 13:44:43
By :
ALTELMA
บทความใน Link นี้ครับ
http://lab.weblissstudio.com/2012/06/27/การพัฒนาเว็บไซต์_mvc/
mod_rewrite ไม่จำเป็นครับ ขึ้นอยู่กับการนำไปใช้มากกว่า เช่นการ implement เราต้องการใช้ url มีรูปแบบที่สวยงาม
การเรียกใช้ controller ก็อาจจะแก้ไข Url นิดๆหน่อยๆ เช่น index.php เป็น /index
ส่งผลให้เข้าใจง่ายแล้วก็ได้เรื่อง SEO ด้วยครับ
ผ่านไปหลายเดือนแล้ว ถ้ามีโอกาสก็ลองเข้าไปอ่านนะครับ
Date :
2012-07-12 19:17:51
By :
Max
Load balance : Server 04