Який проект PHP з відкритим кодом має "ідеальний" дизайн OOP, з якого я можу навчитися? [зачинено]


9

Я новачок в ООП, і я найкраще навчаюся на прикладі.

Ви можете сказати, що це питання схоже на те, які проекти з відкритим кодом Scala слід вивчити, щоб вивчити кращі методи кодування - але в PHP.

Я чув - говорив, що Symfony має найкращу «архітектуру» (не буду робити вигляд, що знаю, що це саме означає), а також доктрину ORM. Чи варто витрачати багато місяців на читання вихідного коду цих проектів, намагаючись вивести використані зразки та вивчити нові хитрощі?

Я бачив рівну кількість веб-сторінок, які видаляють і сподобалися кодові бази Зенда (надаватимуть посилання, якщо вважатимуться необхідними).

Чи знаєте ви про якийсь інший проект, який би змусив будь-якого розробника OOP-ветерана пролити сльози радості?

Дозвольте мені додати, що практичність та сфера використання тут зовсім не викликає занепокоєння - я просто хочу це зробити:

  • Виберіть проект, який має кодову базу, яка дивовижними вважається приголомшливою та більшою за мене.
  • Напишіть код, який досягає того, що робить проект.
  • Порівняйте результати і спробуйте дізнатися те, чого я не знаю.

В основному, кодова база інтересів. Будь-які рекомендації, будь ласка?


4
Я не експерт, але не думаю, що OOP є загальним або обов'язково заохочується в PHP.
asfallows

3
@asfallows Насправді це було так, але з випуском PHP 5.3 все змінюється і є остаточний нахил до використання всіх нових функцій, що надаються мовою для кодування OOP.
Адіта МП

3
Не існує такого поняття, як "ідеальний дизайн OOP".
Роберт Харві

1
Я бачу, що ви вже є учасником Code Review Stack Exchange. Використовуйте його широко, це найцінніший обмін стеками під час навчання, ми б хотіли побачити та обговорити код, який ви будете писати, дізнавшись про OOP ...
yannis

1
@Arkh Harsh. Спробуємо утриматися від особистих нападів. Якщо ви не згодні з асфальтом, знайдіть час, щоб написати добре написаний коментар.

Відповіді:


2

Symfony 2 - це, мабуть, найкращий великий проект, на якому можна навчитися, але досить великий.

Нещодавно я знайшов акуратний і невеликий PHP-проект з відкритим кодом під назвою Phrozn (генератор статичних сайтів). База коду порівняно мала, тому ви можете досить швидко її вивчити.

ОНОВЛЕННЯ:

Phrozn сучасний (використовує PHP 5.3+ і сильно покладається на нього), він розширюється, має суворе покриття коду. Він також повторно використовує код з інших добре написаних проектів, таких як Symfony (YAML), Zend (Autoloader), PEAR та Twig.

OOP, використовує простори імен, і це дуже добре зафіксовано. Я не кажу, що це ідеально, ні що його можна порівняти з таким проектом, як Symfony, але це варто зняти.


1
Чи можете ви надати нам ще кілька деталей про кодову базу Фрозна? Що робить його ідеальним для навчання, крім розміру?
янніс

1
@YannisRizos :) Код можна знайти в github, тому ви можете швидко подивитися. github.com/farazdagi/phrozn
Крістіан П

17

Ну, особисто я б сказав перевірити Symfony2 . Це майже найкращий кінцевий великий проект, який я ще бачив. Це не означає, що в цьому немає поганих деталей, але в цілому це досить добре.

Тепер Зенд знаходиться посередині. Якщо ви подивитеся на загальнодоступний API, це досить добре. До нього є деякі частини WTF, але здебільшого це нормально. Якщо ви почнете більше копатися, ви знайдете набагато більше коду WTF ...

Щодо того, чого слід уникати прямо:

  • CodeIgniter - модель FVAR MVC
  • Кохана - Багато статики
  • Торт - PHP 4 об'єктивна семантика
  • Drupal - зовсім не OOP
  • Wordpress - зовсім не OOP

Що стосується решти, ви побачите, що це удар і промах. У всіх конструкціях є хороші та погані частини. Погляньте на літій , у ньому є кілька дійсно крутих дизайнерських концепцій. Але також є багато перенаправлення фубар та хакерства, щоб змусити його працювати.

І ось що взяти до банку. Немає ідеального дизайну, не намагайтеся його знайти. Натомість подивіться багато їх там і вирішіть самі. Спробуйте кожен, спробуйте їх зламати. Спробуйте зрозуміти їх, просто прочитавши їх (що є хорошим тестом на здоровий дизайн) ...

Просто моя особиста думка ...


2
+1 для symfony2, але що ще важливіше, вся будівля громади навколо нього. ZF2, мабуть, варто також згадати, хоча вони, здається, тримають речі більш абстрактними.
Адріан Шнайдер

1
+1 також для symfony2. Він має дуже міцну базу коду, він використовує безліч кращих практик з інших мов та рамок, велике співтовариство, основні розробники - корисні, доступні люди. Хоча розвиток триває з рефакторингом речей по шляху їх покращення, поточний статус готовий до виробництва. Fabien Potencier, творець Symfony, має низку публікацій у блозі ( fabien.potencier.org ) про створення рамки з компонентами Symfony. Це має бути гарною відправною точкою, оскільки він писав ці пости, щоб допомогти людям вивчати речі.
Хакан Деріал

Читання вихідного коду symfony2 насправді є натхненням, але не є надто складним для розуміння, хорошим моментом. Однак це не розроблений TDD, який, мабуть, був би наріжним каменем для "ідеального" OOP "дизайну", оскільки жоден дизайн не є ідеальним, що означає, що вам потрібно його змінити, і для цього вам потрібні тести.
хакре

2
Ну, не можна серйозно порівнювати Symfony, Zend чи Kohana з Wordpress та Drupal.
Даніель Рібейро

Дякую! Я завантажив Symfony, я почну його розуміти. Дякуємо, що підтвердили мої побоювання щодо CodeIgniter: я одного разу почув на IRC SilverStripe, що "CodeIgniter - це початковий OOP Framework і робить багато помилок для початківців" - і вони почали писати на PHP4, але не встигли сильно рефактор. Я сумніваюся, що вони використали всі чудові функції, які ця мова пропонує. Зверніть увагу, що я НЕ відхиляю CI! Я люблю рамки, і небо знає, скільки проектів стало мені простіше, тому що я ним користувався. Але з метою навчання це може бути не найкращим.
Адітя МП
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.