ผู้เขียน: heiyeluren
บล็อก: http://blog.csdn.net/heiyeshuwu
เวลา: 5-5-2551
เมื่อเร็วๆ นี้ ฉันเพิ่งใช้เฟรมเวิร์ก PHP ต่างประเทศกระแสหลักหลายตัว (ไม่รวมเฟรมเวิร์กในประเทศ) ที่ใช้อยู่ในปัจจุบันในจีน ฉันมีความรู้สึกตามสัญชาตญาณเกี่ยวกับเฟรมเวิร์กเหล่านี้ ฉันอยากจะแบ่งปันสั้นๆ ว่าควรใช้เฟรมเวิร์กใดเมื่อเลือกใช้งาน เป็นข้อมูลอ้างอิง
กรอบอ้างอิงหลัก ได้แก่: CodeIgniter, CakePHP, ZendFramework และ
Symfony -
【CodeIgniter】
เว็บไซต์อย่างเป็นทางการ: http://codeigniter.com
เว็บไซต์ภาษาจีน: http://codeigniter.org.cn
คู่มือภาษาจีน: http://codeigniter.org.cn/user_guide
วิดีโอสอน: http://codeigniter.org.cn/tutorials
เวอร์ชันทดสอบ: CodeIgniter_1.6.1
ข้อดี:
1. การกำหนดค่านั้นง่าย การกำหนดค่าทั้งหมดได้รับการกำหนดค่าโดยใช้สคริปต์ PHP และประสิทธิภาพการดำเนินการสูง มีฟังก์ชันการกำหนดเส้นทางพื้นฐานและสามารถดำเนินการกำหนดเส้นทางได้ในระดับหนึ่ง มีฟังก์ชันเค้าโครงเบื้องต้นและสามารถสร้างลักษณะที่ปรากฏของอินเทอร์เฟซในระดับหนึ่งได้ ; ชั้นฐานข้อมูลถูกห่อหุ้มอย่างดี พร้อมด้วยฟังก์ชัน MVC พื้นฐาน
2. รวดเร็วและรัดกุม รหัสไม่มาก ประสิทธิภาพการดำเนินการสูง กรอบงานที่เรียบง่าย ใช้งานง่าย ค่าเรียนรู้ต่ำ เอกสารรายละเอียด มาพร้อมกับไลบรารีที่เรียบง่ายและใช้งานง่ายมากมาย และกรอบงานเหมาะสำหรับแอปพลิเคชันขนาด
เล็ก ข้อเสีย:
1. เพียงทำความเข้าใจเลเยอร์ Model ว่าเป็นการทำงานของฐานข้อมูล
2. กรอบการทำงานนั้นเรียบง่ายเล็กน้อยและสามารถตอบสนองความต้องการของแอปพลิเคชันขนาดเล็กเท่านั้น แต่สามารถตอบสนองความต้องการของแอปพลิเคชันขนาดกลางได้น้อยกว่าเล็กน้อย
การประเมิน:
โดยทั่วไปแล้ว การใช้ CodeIgniter เพื่อทำให้แอปพลิเคชันที่ง่ายและรวดเร็วเสร็จสมบูรณ์นั้นคุ้มค่า ในเวลาเดียวกัน ก็สามารถสร้างเลย์เอาต์ในระดับหนึ่งเพื่ออำนวยความสะดวกในการใช้เทมเพลตซ้ำได้ ชั้นการดำเนินการข้อมูลถูกห่อหุ้มอย่างดี และ CodeIgniter ไม่ได้ใช้มากนัก รูปแบบการออกแบบที่ซับซ้อนเกินไป ทั้งประสิทธิภาพและความสามารถในการอ่านโค้ดนั้นดี สำหรับไลบรารีเพิ่มเติมนั้น ก็ค่อนข้างดี เรียบง่าย และมีประสิทธิภาพ
【CakePHP】
เว็บไซต์อย่างเป็นทางการ: http://www.cakephp.org
คู่มือภาษาจีน: http://www.1x3x.net/cakephp
วิดีโอสอน: http://search.you.video.sina.com.cn/s?key=cakephp
เวอร์ชันทดสอบ: cake_1.1.19.6305
ข้อดี:
1. CakePHP เป็นเฟรมเวิร์กที่คล้ายคลึงกับ RoR มากที่สุด รวมถึงวิธีการออกแบบและวิธีการ Active Record ของการทำงานของฐานข้อมูล ระดับการออกแบบนั้นหรูหรามาก มันไม่ได้มาพร้อมกับไลบรารีเพิ่มเติม ฟังก์ชั่นทั้งหมดเป็นเฟรมเวิร์กล้วนๆ และประสิทธิภาพในการดำเนินการนั้น ไม่เลวเลย ฟังก์ชั่น hasOne และ hasMany นั้นทรงพลังมากและเหมาะสำหรับการประมวลผลทางธุรกิจที่ซับซ้อน ฟังก์ชั่นการกำหนดเส้นทางและการกำหนดค่านั้นไม่เลวเลย ทุกชั้นของ MVC และมีฟังก์ชันสคริปต์บรรทัดคำสั่งการทำงานอัตโนมัติ
อย่าง
ประสบความสำเร็จในประเทศจีน คนส่วนใหญ่รู้จัก CakePHP ค่าใช้จ่ายในการเรียนรู้อยู่ในระดับปานกลาง
1. ปัญหาร้ายแรงมากกับ CakePHP คือการเข้าใจ Model ว่าเป็นการดำเนินการของเลเยอร์ฐานข้อมูล ซึ่งส่งผลกระทบร้ายแรงต่อความสามารถในการดำเนินการนอกเหนือจากฐานข้อมูล
2.
ฟังก์ชั่นแคชของ CakePHP อ่อนแอเล็กน้อย และฟังก์ชั่นการกำหนดค่าอ่อนแอเล็กน้อย CakePHP ไม่เหมาะสำหรับแอปพลิเคชันขนาดใหญ่ แต่สำหรับแอปพลิเคชันขนาดกลางเท่านั้น ค่าใช้จ่ายในการเรียนรู้จะสูงขึ้นเล็กน้อยสำหรับแอปพลิเคชันขนาดเล็ก
โดยทั่วไปแล้ว กรอบงาน CakePHP แสดงถึงยุคที่สำคัญมากและเป็นตัวแทนของกรอบงาน PHP และในปัจจุบันมีบทบาทที่สำคัญมาก กรอบงานที่เขียนขึ้นเองจำนวนมากเลียนแบบวิธี CakePHP ซึ่งเป็นผลิตภัณฑ์หลัก CakePHP เผยวิธีการพัฒนา RoR Agile และ ปรัชญาการออกแบบในการพิจารณาการทำงานของฐานข้อมูลเนื่องจากโมเดลเดียวเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการพัฒนาแอปพลิเคชันและต้นแบบที่รวดเร็ว ในทำนองเดียวกันก็ควรเลือกเป็นกรอบการพัฒนาสำหรับเว็บไซต์ Web 2.0
【Zend Framework 】
เว็บไซต์อย่างเป็นทางการ: http://framework.zend.com
คู่มือภาษาจีน: http://www.phpeye.com/zf
วิดีโอสอน: http://framework.zend.com/docs/screencasts
เวอร์ชันทดสอบ: ZendFramework-1.5.0
ข้อดี:
1. ผลิตอย่างเป็นทางการมาพร้อมกับไลบรารี่จำนวนมาก ตัวเฟรมเวิร์กนั้นเขียนโดยใช้รูปแบบการออกแบบมากมาย สถาปัตยกรรมมีความหรูหรามากและประสิทธิภาพการดำเนินการอยู่ในระดับปานกลาง การออกแบบ MVC ค่อนข้างง่าย มีฟังก์ชันการกำหนดเส้นทางและไฟล์การกำหนดค่า ค่อนข้างทรงพลัง (สามารถรองรับ XML และ php INI) ไลบรารี่ต่างๆ มีประสิทธิภาพมากและมีฟังก์ชันที่ครอบคลุมมากที่สุดในบรรดาเฟรมเวิร์ก PHP ทั้งหมด รวมถึงที่ไม่เพียงแต่เป็นเฟรมเวิร์กเท่านั้น แต่ยังเป็นไลบรารีคลาสขนาดใหญ่ด้วย (แทนที่ PEAR) คุณสมบัติหลัก สามารถรองรับเลเยอร์ Model ได้อย่างชาญฉลาดนอกเหนือจากการทำงานของฐานข้อมูล (แข็งแกร่งกว่า CodeIgniter และ CakePHP) และสามารถใช้ฟังก์ชัน Loader เพื่อโหลดคลาสอื่น ๆ ที่เพิ่มเข้ามาใหม่ได้อย่างง่ายดาย และได้รับการสนับสนุนจาก แคชส่วนหน้าไปยังแคชส่วนหลัง แคชเทอร์มินัลรองรับ Memcache, APC, SQLite, ไฟล์ ฯลฯ ; ฟังก์ชั่นการทำงานของฐานข้อมูลมีประสิทธิภาพมากและรองรับไดรเวอร์ต่างๆ (อะแดปเตอร์)
ความ
เป็นผู้ใหญ่มากและปัจจุบันมีการใช้งานโดยเว็บไซต์ Web 2.0 หลายแห่ง และค่าใช้จ่ายในการเรียนรู้อยู่ในระดับปานกลาง
1. ฟังก์ชั่น MVC ค่อนข้างอ่อนแอ มีการปรับใช้เลเยอร์ View เพียงอย่างเดียว (เหมือนกับที่ไม่ได้ใช้งาน) และไม่สามารถควบคุมส่วนหน้าได้อย่างมีประสิทธิภาพมากนัก
2. ไม่มีสคริปต์อัตโนมัติ หากต้องการสร้างแอปพลิเคชัน รวมถึงไฟล์รายการ คุณต้องสร้างด้วยตนเอง มีค่าใช้จ่ายสูง
3. Zend Framework ไม่ใช่ปัญหาใหญ่ในฐานะเฟรมเวิร์กแอปพลิเคชันขนาดกลาง และแทบจะไม่สามารถใช้เป็นเฟรมเวิร์กสำหรับแอปพลิเคชันขนาดใหญ่ได้ อย่างไรก็ตาม เนื่องจากเฟรมเวิร์ก PHP ขนาดใหญ่เติบโตเต็มที่ จึงยังต้องการความพยายามบาง
ประการ ประเมิน:
เนื่องจากเป็นเฟรมเวิร์กที่สร้างขึ้นอย่างเป็นทางการ ความทะเยอทะยานของ Zend Framework จึงเป็นสิ่งที่คาดการณ์ได้ โดยต้องการรวมเฟรมเวิร์กอื่นๆ เข้าด้วยกันและในขณะเดียวกันก็รวมไลบรารีคลาสที่ทรงพลังจำนวนมากเพื่อให้บริการเฟรมเวิร์กแบบครบวงจร นอกจากนี้ ทีมพัฒนาของพวกเขายังทรงพลังและมีความสามารถอย่างเต็มที่ด้วย ความสามารถในการพัฒนาผลิตภัณฑ์ที่ทรงพลังมาก โดยพื้นฐานแล้ว Zend Framework มีอนาคตที่สดใส หากใช้เวลามากขึ้นในการปรับปรุงกรอบงาน ในทำนองเดียวกัน สถาปัตยกรรม Zend Framework เองก็ค่อนข้างสวยงาม ซึ่งแสดงให้เห็นว่า Zend มีผู้เชี่ยวชาญจำนวนมากอย่างเป็นทางการและค่อนข้างก้าวหน้าในแนวคิดการออกแบบ แม้ว่าฟังก์ชันบางอย่างจะไม่ได้ถูกนำมาใช้อย่างสมบูรณ์ เช่น View layer, สคริปต์อัตโนมัติ ฯลฯ ทั้งหมดนี้ล้วนขึ้นอยู่กับ ในอนาคต โดยทั่วไปแล้ว Zend Framework เป็นเฟรมเวิร์กที่คาดหวังมากที่สุด แน่นอนว่าจะไม่มีปัญหาหากคุณต้องการใช้ในโครงการของคุณตอนนี้
【Symfony】
เว็บไซต์อย่างเป็นทางการ: http://www.symfony-project.org
เว็บไซต์ภาษาจีน: http://symfony-project.cn
คู่มือขั้นสุดท้าย: http://www.symfony-project.org/book
ข้อมูลอ้างอิงการเรียนรู้: http://sf.thecodecentral.com
เวอร์ชันทดสอบ: symfony-1.0.13
ข้อดี:
1. Symfony เป็นเฟรมเวิร์ก PHP ที่ทรงพลังที่สุดที่ฉันรู้จัก และฉันใช้มันมาเป็นเวลานานแล้ว แต่ฟังก์ชั่นหลายอย่างยังไม่ถูกค้นพบ มันใช้งาน MVC สามเลเยอร์อย่างสมบูรณ์และสรุปทุกอย่าง รวมถึง $_POST, $_GET ข้อมูล, การจัดการข้อยกเว้น, ฟังก์ชั่นการดีบัก, การตรวจจับข้อมูล รวมถึงฟังก์ชั่นแคชที่ทรงพลัง, การโหลดคลาสอัตโนมัติ (ฟังก์ชั่นนี้เจ๋งมาก), การสนับสนุนระดับชาติ i18n ที่ทรงพลัง มีการทำงานของเลเยอร์มุมมองที่ทรงพลังมากและสามารถมีหลายไฟล์ในลักษณะทีละน้อย ฟังก์ชั่นการกำหนดค่าที่ทรงพลังมาก การใช้การกำหนดค่า yml สามารถควบคุมเฟรมเวิร์กและพฤติกรรมการทำงานของโปรแกรมทั้งหมด ซึ่งทรงพลังมากจนทำให้ผู้คนพูดไม่ออก คุณสามารถกำหนดคลาสต่าง ๆ ของคุณเองได้ตามต้องการ และ Symfony ก็สามารถโหลดคลาสเหล่านี้ได้โดยอัตโนมัติ ซึ่งสามารถเรียกใช้ได้ตามต้องการในโปรแกรม รวมถึงการจัดการโครงการและแอปพลิเคชันหลายระดับที่มีประสิทธิภาพ: โครงการ --> แอปพลิเคชัน --> โมดูล --> การดำเนินการ ซึ่งสามารถตอบสนองความต้องการของหลายแอปพลิเคชันภายใต้โครงการเดียว และแต่ละเลเยอร์สามารถกำหนดไลบรารีคลาสของตัวเองได้ ไฟล์การกำหนดค่า เค้าโครง ฟังก์ชั่นการทำงานของบรรทัดคำสั่งที่ทรงพลังมาก รวมถึงการสร้างโปรเจ็กต์ การสร้างแอปพลิเคชัน การสร้างโมดูล การรีเฟรชแคช ฯลฯ
2. Symfony เป็นตัวเลือกแรกสำหรับการพัฒนาโครงการขนาดใหญ่และซับซ้อน เนื่องจากการใช้ Symfony จะช่วยประหยัดต้นทุนการพัฒนาได้อย่างมาก และจะไม่มีปัญหาเมื่อมีคนหลายคนทำงานร่วมกัน หลังจากกำหนดคลาสพื้นฐานในระดับโครงการแล้ว โมดูลใดๆ ก็สามารถทำได้ ข้อเสียของการใช้โค้ดซ้ำอย่างมาก
:
1. โมเดลการดำเนินการฐานข้อมูลใช้เฮฟวี่เวท prop และ creole แต่ในเวอร์ชันที่ฉันทดสอบ พวกมันถูกย้ายไปที่ addon แล้ว พวกมันสามารถใช้ได้หรือไม่
2. ไม่สามารถควบคุมฟังก์ชันแคชได้ แคชจะถูกแคชทุกครั้งระหว่างการพัฒนาและการดีบัก คุณต้องดำเนินการ symfony cc และ symfony rc เพื่อล้างและสร้างแคชใหม่
3. ประสิทธิภาพไม่สูงมาก โดยเฉพาะกระบวนการแยกวิเคราะห์เทมเพลตและการอ่านไฟล์การกำหนดค่าซึ่งใช้เวลานาน
4. ค่าใช้จ่ายในการเรียนรู้สูงมาก และไม่มีชุมชนและเอกสารประกอบที่สมบูรณ์ในจีน ไม่มีแม้แต่คู่มือภาษาจีน ดังนั้นจึงต้องใช้เวลามากในการเรียนรู้ฟังก์ชันทั้งหมดและ
ประเมินผล:
Symfony เป็นเฟรมเวิร์กระดับองค์กรอย่างแน่นอน สิ่งเดียวที่ดูเหมือนจะสามารถแข่งขันกับเฟรมเวิร์กอันทรงพลังในสาขา Java ได้ สิ่งที่ทรงพลังนั้นมีความซับซ้อนในการเรียนรู้ตามธรรมชาติ แต่ก็มีประโยชน์สำหรับการพัฒนาโครงการเช่นกัน โดยธรรมชาติแล้ว ขอแนะนำให้ใช้ Symfony สำหรับโครงการที่ซับซ้อน ฉันคิดว่ามันคุ้มค่า ค่าใช้จ่ายในการบำรุงรักษาในระยะหลังค่อนข้างต่ำและการนำกลับมาใช้ใหม่มีความแข็งแกร่งมาก ในทำนองเดียวกัน หากคุณใช้ Symfony สำหรับโครงการอินเทอร์เน็ตที่ซับซ้อนมากขึ้น คุณต้องพิจารณาปัญหาของการกระจายฐานข้อมูล จากนั้นคุณจะต้องละทิ้งเลเยอร์การดำเนินการฐานข้อมูลที่มาพร้อมกับ Symfony และกำหนดด้วยตนเอง แน่นอนว่า Symfony รองรับการสร้างเลเยอร์โมเดลโดยพลการ
[ความคิดเห็นทั่วไป]
เฟรมเวิร์กข้างต้นมีลักษณะเป็นของตัวเอง และทั้งหมดเป็นโปรเจ็กต์โอเพ่นซอร์ส อย่างไรก็ตาม โปรเจ็กต์ที่ตกเป็นเป้าหมายของเฟรมเวิร์กนั้นแตกต่างกัน โดยทั่วไปแล้ว CodeIngiter จะเหมาะกับโปรเจ็กต์ขนาดเล็ก ส่วน CakePHP และ Zend Framework นั้นเหมาะสมกว่า โปรเจ็กต์ขนาดกลาง และ Symfony เหมาะสำหรับโปรเจ็กต์ขนาดใหญ่และรุ่นเฮฟวี่เวทมากกว่า เมื่อเลือกโปรเจ็กต์ คุณต้องพิจารณาถึงความสามารถในการปรับแต่งและปรับขนาดของเฟรมเวิร์กได้อย่างเต็มที่ เนื่องจากแต่ละโปรเจ็กต์ไม่สามารถระบุได้ว่าคุณจะทำการเปลี่ยนแปลงหรือไม่เมื่อความต้องการของคุณเปลี่ยนไป
หากพูดกันตรงๆ Zend Framework และ Symfony มีความสามารถที่แข็งแกร่งในการรับมือกับการเปลี่ยนแปลง โดยเฉพาะคลาสในเลเยอร์โมเดลที่สามารถปรับแต่งได้ตามต้องการ ทำให้สะดวกมากในการเพิ่มธุรกิจของคุณเองหรือคลาสการประมวลผลข้อมูล โดยส่วนตัวแล้วฉันแนะนำเฟรมเวิร์กเหล่านี้ให้ ใช้ในโครงการขนาดกลางและขนาดใหญ่ CodeIngiter และ CakePHP ยังสามารถมีบทบาทสำคัญในโปรเจ็กต์ขนาดเล็กและขนาดกลาง การพัฒนาอย่างรวดเร็วและการสร้างต้นแบบ และเหมาะมากสำหรับการพัฒนาโปรเจ็กต์ต้นแบบโดยมีเป้าหมายที่ไม่ชัดเจน วิธีที่ดีที่สุดในการทำความเข้าใจกรอบงานคือการใช้มัน และวิธีที่ดีที่สุดในการเรียนรู้กรอบงานคือการดูวิดีโอ :-)
ผู้ใจดีมีความคิดเห็นที่แตกต่างกัน และคนฉลาดมีความคิดเห็นที่แตกต่างกัน เมื่อเลือกกรอบการทำงานสำหรับโครงการ โปรดตรวจสอบความต้องการของโครงการและการเปลี่ยนแปลงในอนาคตอย่างรอบคอบ จากนั้นเลือกกรอบการทำงานที่เหมาะสมเพื่อให้เกิดความสมดุลที่เหมาะสมระหว่างความเร็วในการพัฒนาโครงการและ การบำรุงรักษาในภายหลัง แน่นอนว่า บางทีมันอาจจะเหมาะสมกว่าที่จะเขียนกรอบงานด้วยตัวเอง :-)
ฉันได้ทำการประเมินทั่วไปของกรอบงานหลายประการ ฉันเดาว่ามีหลายสิ่งหลายอย่างที่ไม่ตรงประเด็น ดังนั้นฉันขอฝากไว้เพียงเท่านี้ ความคิดเห็นและการแก้ไข!