โครงการ PHP โอเพ่นซอร์สใดที่มีการออกแบบ OOP ที่สมบูรณ์แบบที่ฉันสามารถเรียนรู้ได้ [ปิด]


9

ฉันเป็นมือใหม่สำหรับ OOP และฉันเรียนรู้จากตัวอย่างได้ดีที่สุด

คุณสามารถพูดได้ว่าคำถามนี้คล้ายกับโครงการโอเพ่นซอร์สสกาล่าใดที่ฉันควรศึกษาเพื่อเรียนรู้วิธีการเขียนโค้ดที่ดีที่สุด - แต่ใน PHP

ฉันได้ยินมาแล้วว่า Symfony มี 'สถาปัตยกรรม' ที่ดีที่สุด (ฉันจะไม่แกล้งฉันรู้ว่ามันหมายถึงอะไร) และ Doctrine ORM มันคุ้มไหมที่จะใช้เวลาหลายเดือนในการอ่านซอร์สโค้ดของโครงการเหล่านี้พยายามที่จะอนุมานรูปแบบที่ใช้และเรียนรู้เทคนิคใหม่ ๆ ?

ฉันได้เห็นหน้าเว็บจำนวนเท่ากันที่มีการปฏิเสธและชื่นชอบ codebase ของ Zend (จะให้ลิงก์หากเห็นว่าจำเป็น)

คุณรู้หรือไม่เกี่ยวกับโครงการอื่น ๆ ที่จะทำให้นักพัฒนา OOP ที่มีประสบการณ์หลั่งน้ำตาแห่งความสุข?

โปรดให้ฉันเพิ่มว่าการใช้งานจริงและขอบเขตการใช้งานไม่ใช่เรื่องที่น่ากังวลเลย - ฉันแค่ต้องการทำ:

  • เลือกโครงการที่มี codebase ซึ่งถือว่ายอดเยี่ยมโดยผู้พัฒนาและดีกว่าฉัน
  • เขียนโค้ดที่บรรลุสิ่งที่โครงการทำ
  • เปรียบเทียบผลลัพธ์และลองเรียนรู้สิ่งที่ฉันไม่รู้

โดยทั่วไปฐานความสนใจด้านวิชาการ มีคำแนะนำอะไรมั้ย


4
ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ฉันไม่คิดว่า OOP เป็นเรื่องปกติหรือจำเป็นต้องมีการสนับสนุนใน PHP
asfallows

3
@asfallows แน่นอนว่าเป็นกรณี - แต่ด้วยการเปิดตัวของ PHP 5.3 สิ่งต่าง ๆ กำลังเปลี่ยนแปลงและมีความเอียงที่ชัดเจนต่อการใช้คุณสมบัติใหม่ที่ตบภาษาที่ให้การเข้ารหัส OOP
Aditya MP

3
ไม่มีสิ่งเช่น "การออกแบบ OOP ที่สมบูรณ์แบบ"
Robert Harvey

1
ฉันเห็นว่าคุณเป็นสมาชิกของ Code Review Stack Exchange แล้ว ใช้อย่างกว้างขวางมันเป็น Stack Exchange ที่มีค่าที่สุดเมื่อเรียนรู้เราชอบที่จะเห็นและพูดคุยเกี่ยวกับรหัสที่คุณจะเขียนในขณะที่เรียนรู้เกี่ยวกับ OOP ...
yannis

1
@Arkh Harsh ลองงดการโจมตีส่วนตัว หากคุณไม่เห็นด้วยกับ asfallows ใช้เวลาในการเขียนความคิดเห็นที่เป็นลายลักษณ์อักษร

คำตอบ:


2

Symfony 2 น่าจะเป็นโครงการขนาดใหญ่ที่ดีที่สุดในการเรียนรู้จาก แต่ก็ค่อนข้างใหญ่

ฉันเพิ่งพบโครงการ PHP โอเพ่นซอร์สที่เรียบร้อยและเล็ก ๆ ที่เรียกว่าPhrozn (เครื่องมือสร้างเว็บไซต์แบบคงที่) รหัสฐานมันค่อนข้างเล็กดังนั้นคุณสามารถตรวจสอบได้อย่างรวดเร็ว

UPDATE:

Phrozn ทันสมัย ​​(ใช้ PHP 5.3 ขึ้นไปและพึ่งพาอาศัยอย่างหนัก) สามารถขยายได้ครอบคลุมรหัสที่เข้มงวด นอกจากนี้ยังใช้รหัสจากโครงการที่เขียนเป็นอย่างดีเช่น Symfony (YAML), Zend (Autoloader), PEAR และ Twig

OOP ใช้เนมสเปซและมีการบันทึกไว้เป็นอย่างดี ฉันไม่ได้บอกว่ามันสมบูรณ์แบบหรือเปรียบเทียบได้กับโปรเจคอย่าง Symfony แต่มันก็คุ้มค่ากับการยิง


1
คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับ codebase ของ Phrozn ได้หรือไม่ อะไรทำให้เหมาะสำหรับการเรียนนอกเหนือจากขนาด?
yannis

1
@YannisRizos :) รหัสสามารถพบได้ที่ gitHub ดังนั้นคุณสามารถดูได้อย่างรวดเร็ว github.com/farazdagi/phrozn
คริสเตียน P

17

ดีส่วนตัวผมจะบอกว่าตรวจสอบSymfony2 มันเป็นโครงการขนาดใหญ่ตั้งแต่ต้นจนจบที่ดีที่สุดที่ฉันเคยเห็นมา นั่นไม่ได้หมายความว่าจะไม่มีชิ้นส่วนที่ไม่ดี แต่โดยรวมมันค่อนข้างดี

ตอนนี้Zendอยู่ตรงกลาง ถ้าคุณดู API สาธารณะมันค่อนข้างดี มีชิ้นส่วน WTF บางส่วน แต่ส่วนใหญ่ก็โอเค หากคุณเริ่มขุดมันมากขึ้นคุณจะพบรหัส WTF มากขึ้น ...

เท่าที่ควรหลีกเลี่ยง:

  • CodeIgniter - รุ่น Fubar MVC
  • Kohana - สถิตยศาสตร์มากมาย
  • Cake - ความหมายของวัตถุ PHP 4
  • Drupal - ไม่ใช่ OOP เลย
  • Wordpress - ไม่ใช่ OOP เลย

เท่าที่เหลือคุณจะพบว่ามันเป็นเพลงฮิตและคิดถึง มีชิ้นส่วนที่ดีและไม่ดีในการออกแบบทั้งหมด ลองดูที่Lithiumมันมีแนวคิดการออกแบบที่เจ๋งจริงๆ แต่มันก็มีการเปลี่ยนเส้นทาง fubar และแฮกเกอร์จำนวนมากเพื่อให้สามารถใช้งานได้

และนั่นคือสิ่งที่จะนำไปสู่ธนาคาร ไม่มีการออกแบบที่สมบูรณ์แบบอย่าพยายามหามัน ลองมองดูพวกเขาหลายคนและตัดสินใจด้วยตัวเอง ลองแต่ละครั้งพยายามที่จะทำลายพวกเขา พยายามที่จะเข้าใจพวกเขาเพียงแค่อ่านพวกเขา (ซึ่งเป็นการทดสอบแบบมีเหตุผลที่ดี) ...

แค่ความเห็นส่วนตัวของฉัน ...


2
+1 สำหรับ symfony2 แต่ที่สำคัญกว่านั้นคือการสร้างชุมชนโดยรอบ ZF2 ก็น่าจะพูดถึงเช่นกันแม้ว่าพวกเขาดูเหมือนจะทำให้สิ่งที่เป็นนามธรรมมากขึ้น
Adrian Schneider

1
+1 สำหรับ symfony2 ด้วย มันมีฐานรหัสที่แข็งแกร่งจริงๆมันใช้แนวปฏิบัติที่ดีที่สุดจากภาษาและกรอบงานอื่น ๆ ชุมชนที่ยอดเยี่ยมนักพัฒนาหลักมีประโยชน์คนที่เข้าถึงได้ แม้ว่าการพัฒนาจะดำเนินต่อไปด้วยการปรับโครงสร้างสิ่งต่างๆตามวิธีที่ทำให้ดีขึ้น แต่สถานะปัจจุบันก็พร้อมสำหรับการผลิต Fabien Potencier ผู้สร้าง Symfony มีชุดบทความบล็อก ( fabien.potencier.org ) เกี่ยวกับการสร้างกรอบงานด้วยองค์ประกอบของ Symfony มันควรจะเป็นจุดเริ่มต้นที่ดีในขณะที่เขาเขียนโพสต์นี้เพื่อช่วยให้ผู้คนเรียนรู้สิ่งต่าง ๆ
Hakan Deryal

การอ่านซอร์สโค้ด symfony2 เป็นแรงบันดาลใจจริง ๆ โดยไม่ซับซ้อนเกินกว่าจะเข้าใจได้ อย่างไรก็ตามมันไม่ได้พัฒนา TDD ซึ่งอาจเป็นรากฐานที่สำคัญสำหรับการออกแบบ "สมบูรณ์แบบ" OOP "" - เนื่องจากไม่มีการออกแบบที่สมบูรณ์แบบซึ่งหมายความว่าคุณจำเป็นต้องเปลี่ยนมันและสำหรับการทดสอบที่คุณต้องการ
hakre

2
ทีนี้คุณไม่สามารถเปรียบเทียบ Symfony, Zend หรือ Kohana กับ Wordpress และ Drupal ได้อย่างจริงจัง
Daniel Ribeiro

ขอบคุณ! ฉันดาวน์โหลด Symfony แล้วฉันจะเริ่มทำความเข้าใจ ขอบคุณสำหรับการยืนยันความกลัวของฉันเกี่ยวกับ CodeIgniter: ฉันเคยได้ยิน SilverStripe IRC ว่า "CodeIgniter เป็นมือใหม่ OOP Framework และทำผิดพลาดมากมาย" - และพวกเขาก็เริ่มเขียนใน PHP4 แต่ไม่มีเวลาที่จะปรับโครงสร้างอย่างกว้างขวาง ฉันสงสัยว่าพวกเขาใช้คุณสมบัติที่ยอดเยี่ยมทั้งหมดของภาษานี้ โปรดทราบว่าฉันไม่ได้ปฏิเสธ CI! ฉันรักกรอบและสวรรค์รู้ว่าหลายโครงการกลายเป็นเรื่องง่ายสำหรับฉันเพราะฉันใช้มัน แต่เพื่อจุดประสงค์ในการเรียนรู้มันอาจไม่ดีที่สุด
Aditya MP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.