Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Лонгрид для новичков чата php

Введение

Этот текст о том, с чего начать прежде чем писать в https://telegram.me/prophp7

Правила

  1. Тема чата - php и связанное с ним. Оффтоп не приветствуется
  2. Общение стикерами оставьте для флудилок
  3. Спам и боты банятся как только, так сразу. Если заметили спам, то смело зовите модератора
  4. Прежде чем задать вопрос - попробуй найти ответ сам
  5. За флуд и глупые вопросы можно отправиться в RO на день или неделю.

Модераторы

  1. @mkusher
  2. @fes0r
  3. @Enleur
  4. @f3ath

Начало жизни в мире php(читать ссылки в порядке очередности):

  1. http://www.phptherightway.com/ или http://getjump.me/ru-php-the-right-way/
  2. https://github.com/phptodayorg/php-must-watch
  3. https://git-scm.com/book/ru/v1 или https://git-scm.com/book/en/v1
  4. https://habrahabr.ru/post/136110/
  5. https://github.com/arturpanteleev/webdev-map

Очень и очень рекомендуется иметь профиль https://github.com

Ну, поехали

Прежде чем начать писать код, надо бы выяснить, как его принято оформлять. Изучаем:

  1. Basic Coding Standard: http://www.php-fig.org/psr/psr-1/
  2. Coding Style Guide: http://www.php-fig.org/psr/psr-2/

Зависимости и composer

Ваши проекты редко не требуют подключения сторонних дополнений. Очень много задач было решено до вас, очень много библиотек написано. Но не стоит руками их скачивать и ложить в папку проекта, а стоит использовать composer и искать пакеты на packagist. Подробнее про него https://habrahabr.ru/post/145946/

Редакторы и IDE

Лучшим IDE для php, в котором много инструментов из коробки, является phpstorm. Новичкам строго рекомендуется. А в остальном, любой редактор(vim, emacs, atom, sublime text and etc.) можно настроить для удобной работы с php.

Полезные ресурсы

В этом разделе собраны ресурсы, которые помогут тебе быстрее освоится в мире php и веб-разработки в целом. Есть информация как для начинающих так и для более опытных программистов.

  1. https://map.hexlet.io/stacks/php - Платный ресурс, но в бесплатном режиме можно увидеть карту обучения и все темы которые нужно изучить.
  2. http://ruhighload.com/ - Рассказывают просто о сложных вещах.
  3. https://www.sitepoint.com/php/ - Статьи о РНР и не только, уровень читателя - разный.
  4. http://www.phpdeveloper.org/ - Подборка новостей из мира РНР.
  5. http://stackoverflow.com/documentation/php/topics - новый проект от SO(раздел о php)
@zhikiri
Copy link

zhikiri commented Jul 19, 2016

@thatside
Copy link

thatside commented Sep 24, 2019

@mkusher стоит добавить в золотой список

Sergey Protko, [24.09.19 22:43]
короч смотри....

есть оч простая штука:

  • модуль это единица кода. файл тоже модуль (нэймспейс в контексте пыхи). Директория - тоже модуль.
  • модули "хорошие" когда между ними низкая связанность и внутри высокое зацепление (low coupling/high cohesion)
  • с ростом проекта растет необходимость изоляции этих модулей (простой риск менеджмент - ты не можешь случайно сломать фичу если ты ее не трогал)
  • единственный верный вариант в этом плане - рассматривать фичи как модули и искать у них границы, выделять точки расширения что бы минимизировать необходимость их "менять", следить за пересечениями границ.

Если проект на 2-3 разработчика то любая структура будет работать. Если проект на 20-30 разработчиков - ситуация будет чуть иная.

И проблемы это все не оч технические - машинам похеру на структуру кода. Это в основном проблемы коммуникаций между людьми и управление сложностью.

Sergey Protko, [24.09.19 22:45]
ну и далее проблема почему нигде не найдешь в открытом доступе нормальной структуры проекта:

  • выделять фичи сложно. реально сложно. слои и технические нюансы намного проще разработчику выделить.
  • проекты обычно начинаются небольшими где все эти вещи - да пофигу на них.
  • культр карго - люди делают так как видели раньше и крайне редко анализируют что происходит
  • если структурировать проект вокруг идеи изоляции фич - то все проекты будут иметь разную структуру (потому что фичи разные). Как следствие посмотрев один проект ты ничему вообще не научишься. потому что главная сложность в процессе а не в конечном результате (который обычно промежуточный)
  • NDA

Sergey Protko, [24.09.19 22:48]
ну и еще накину - любой успешный продукт довольно быстро начнет расти в плане количества людей и проблемы коммуникаций будут увеличиваться как факториал количества участников (дохуя грубо говоря). Во всяком случае если не изолировать фичи

Sergey Protko, [24.09.19 22:49]
и на всякий случай - при разделении проекта на фичи ты будешь ошибаться. не один раз. тем более на начальных этапах когда не оч понятно что проект из себя представляет и как оно должно быть.

главное что если не пытаться и не пробовать - то мы быстро придем к крайне не эффективному процессу разработки.

@mkusher
Copy link
Author

mkusher commented Sep 25, 2019

@thatside очень крутая паста от @fes0r
я попросил его собрать это в отдельный гист и добавлю ссылку. Это вообще непривязано к php

@selyatin83
Copy link

selyatin83 commented May 22, 2021

Psr-2 уже устарел.
Предлагаю добавить пометку и сказать о psr-12

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment