SobolevaSys
@SobolevaSys
Начинающая

Исходники каких PHP-проектов лучше поизучать для примера отличного PHP-кода?

Есть много теоритической информации от авторов различных легендарных книг по программированию по написанию отличного кода (оформление, самодокументирование, упрощение, практики, подходы и т.д.). Например, в такой книге как "Совершенный код" (С. Макконнелл) много разобрано подобных тем, от принципов именования переменных и методов и до модульности и сокрытия информации.

Как и следовало ожидать - часто рецепт зависит от ситуации и от языковых возможностей (разные подходы в разных ситуациях). Хотелось бы увидеть примеры отличного кода в работе реальных проектов. Изучение исходников Yii2 и Laravel многое дали, но не все.

Какие проекты на PHP с открытыми исходниками можно рассмотреть как пример отличного кода? Желательно на каком либо фреймворки, но необязательно.
  • Вопрос задан
  • 5019 просмотров
Пригласить эксперта
Ответы на вопрос 5
@vashaaa
Юх с горы
Symphony копайте, вам на год хватит.
UPD:ответ вас позлил наверное но я Объясню. Yii хорош, но symphony лучше. Копайте его, залейте клона с официального гита себе и разберитесь что и как работает. Не узнайте как с ним работать, а именно нарежьте его нано скальпелем до переменных, и посмотрите как он устроен. На том же гите поищите проекты на нем и разберитесь как и почему. Если уверены в своих силах закомитьте что нибудь, мелкую фичу. Почему symphony а не что-то ещё? Разберёшся с ним - с остальными проблем не будет. Конечно можно с дуру взять и смотреть Zend, но пожалейте свои мозги и время,года 3-4 на понимание уйдёт. Почему фреймворк а не книги или что-то ещё? Ну как вам сказать, книги это хорошо и читать их нужно, но фреймворки и примеры работ это здесь и сейчас, это то что востребовано то что вас прокормит, а книги можно почитать для общего развития авось где-то пригодится. Но это я именно об php и структуризации кода. Алгоритмы, архитектуры бд и т.д. закидывать не лзя, это читайте.
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
PSR, Symfony, Zend Framework 2
Ни в коему случае не laravel и yii

Если же писать что-то на laravel планируется, то посмотрите организацию модулей в asgardcms (там много мусора от старых версий, но модули лучшее что видел в мире laravel)
Ответ написан
copist
@copist
Empower people to give
Проголосую за Yii (первый или второй) и Zend Framework 2. Александр Макаров только не надо про срезание углов :) Laravel нигде не срезал, все паттерны реализовал, очень гибкий. За это его обхожу стороной, огородами. Для начала надо что-то попроще.

В Yii/Zend всё можно раскопать (на тостере пример про компоненты, и роутинг). Не очень много кода, в большинстве случаев не сложные реализации классических паттернов проектирования, довольно простая навигация по классам и разбор стека ошибок.

Дополнение к ответу:
Хотелось бы увидеть примеры отличного кода в работе реальных проектов. Изучение исходников Yii2 и Laravel многое дали, но не все.

Не заметил сразу.

А что не дали эти фреймворки?
Я не слишком шокирую, если скажу, что в реальных проектах код не очень отличный? Высокопроизводительные нагруженные веб-проекты стараются обходить стороной сложные шаблоны проектирования, потому что всякие там поздние связывания, декораторы, рефлексии и прочая ерунда жрёт ресурсы, которых постоянно не хватает. Вместо красивого класса-декоратора просто вызывают метод класса, вместо DI напрямую вызывают классы. Классные проекты отличаются классностью для пользователя, делают полезные штуки, все такие веб-два-нольные, материал-дизайные, юзер-френдные. А внутри там ......... ааааа! Каждый раз, когда в классный проект решают внести ещё одну классную штуку, то один, то другой программист говорит: "там надо переписывать, лучше заново". Чем старше проект, тем чаще звучат слова "говнокод", "костыли" и "рефакторинг".

В общем, если Yii и Symphony и шаблоны проектирования уже пройденный этап, то нужны другие книги :)
Ответ написан
bitver
@bitver
PSR

Больше ничего не надо, остальное только опытом нарабатывать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы