PHP проект с отличным дизайном ООП для учебных целей - PullRequest
8 голосов
/ 01 сентября 2010

Недавно я заинтересовался правильным дизайном ООП в веб-приложениях. Я думаю, что понимаю большинство принципов и шаблонов проектирования, но иногда у меня возникают проблемы с их применением на практике.

Я использую MVC и думаю, что могу проектировать контроллеры и представления ООП. Проблема, с которой я сталкиваюсь, связана с моделями. Я особенно одержим внедрением зависимости и инверсией управления в целом. Это хорошо работает в небольших примерах, но у меня возникают проблемы при разработке сложных многослойных моделей - я думаю о различных способах внедрения зависимостей в нижние уровни и т. Д.

Поэтому я решил поискать несколько проектов, выполненных более опытными программистами ООП, которые я мог бы изучить. Я ищу PHP веб-приложение, желательно с архитектурным шаблоном MVC. Также я не против, если у него анемичная модель (которую обычно считают антипаттерном, но в приложениях, основанных на больших объемах данных, мне часто приходится использовать анемичные модели).

Большое спасибо.

РЕДАКТИРОВАТЬ: Я не ищу рамки, но для полного приложения. Фреймворки обычно не имеют ничего общего с модельной архитектурой.

Ответы [ 7 ]

4 голосов
/ 01 сентября 2010

Воспламенитель кода - php4, я не очень рекомендую его. PHP ООП изменился с тех пор. Лучшая идея была бы кохана

Я многому научился, проверяя Konstrukt . Создатель тоже полуактивен на SO =)

1 голос
/ 03 сентября 2010

С какой именно проблемой вы сталкиваетесь с «Моделями»?Вы говорите о внедрении зависимости, но на самом деле это не имеет ничего общего с концепцией «модели» в контексте MVC.Если вы ищете примеры того, как управлять и передавать зависимости вниз по иерархии объектов, вы можете взглянуть на реализацию Symfony 2.0 Dependency Injection Container.

1 голос
/ 03 сентября 2010

Я рекомендую вам взглянуть на Symfony 2.

Это, вероятно, лучший проект PHP, который вы найдете. Это SOLID , DRY и использует шаблоны, где это применимо.

1 голос
/ 01 сентября 2010

Magento Commerce имеет сложные многослойные модели (www.magentocommerce.com), из которых вы можете выбрать один или два трюка.

Но мой (личный) опыт работы с Magento был разочаровывающим: я взломал его с версией 0.8-1.1, и она оказалась слишком сложной и плохо документированной. Попытка выяснить, как это на самом деле работает, была сложной: в конечном итоге вы откроете множество файлов, открытых в вашем редакторе, большинство из которых называются Abstract.php. Надеюсь, что с тех пор многое улучшилось.

0 голосов
/ 01 сентября 2010

Если вы ищете «отличный дизайн ООП», вы, вероятно, заглядываете не в тот угол.PHP не очень силен в своих шаблонах ООП.Если ваше изучение и ситуация позволяют, я рекомендую вместо этого заглянуть в проект Java.

0 голосов
/ 01 сентября 2010

Я настоятельно рекомендую CodeIgniter с нуля на Nettuts +.

http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-profiling-benchmarking-hooks/

РЕДАКТИРОВАТЬ: @ Galen

Это не правильно.CodeIgniter поддерживает PHP 5.3.0 начиная с версии 1.7.2.

0 голосов
/ 01 сентября 2010

Платформа CodeIgniter приходит на ум как достойный источник для изучения

...