eucalipt
@eucalipt
Самоделкин.

PHP Development. Как осовременниться?

Здравствуйте.
Я уже довольно давно занимаюсь вэб-разработкой, экспериментирую как с фронт- так и с бэк- эндом, но в последнее время больший уклон делаю, все-таки, на бэкэнд.

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

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

Вот и я решил "осовремениться".

Во-первых, я составил для себя список (выписал из вышеупомянутой статьи).

Теперь стараюсь этому списку следовать.

Первым делом я решил отказаться от самописных фреймворков и отдать предпочтение Laravel'ю. Прошу мой выбор не осуждать, так как суть этого вопроса не в разведении холивар по поводу того, какой фреймворк лучше. Тем более, что я все еще экспериментирую по этому поводу.

Как оказалось, для работы Laravel нужен PHP версии не ниже 5.6. Нет, меня это не остановило и не лишило желания использовать именно этот фреймворк. Наоборот.
Дело в том, что я никогда раньше не работал с локальным PHP. Я начинал и вот уже несколько лет работал (создавал, тестировал свои приложения) на одном бесплатном хостинге. Но вот беда: нужной версии PHP для работы с Laravel с нем не оказалось.

Это и стало для меня отправной точкой.

Установил я nginx (решил отказаться от Apache, пишут, что он уже морально устаревает и работает медленнее). Установил PHP последней версии (у меня Ubuntu). Решил разобраться с Composer'ом, потому что
...если у вас в проекте нет файла composer.json, то с вами даже здороваться не будут.


Вот тут и началась чехарда (нет, началась она, конечно, раньше, но наиболее невыносимо стало здесь. Да и раньше гугл помогал)

Во-первых, не понимаю, зачем. Во-вторых, не понимаю, как. Пример: установил этот Composer, ответил на все его вопросы (добрую часть вообще не понял (да и не гуглится)), указал, что нужен Laravel, так эта скотина мне какого-то лешего накидала туда и yii, и symfony, и laravel (инстеллер, с которым вообще не понимаю, что делать) и еще много-много чего.

Вопрос:
Действительно ли все это нужно? И действительно ли это все обязательно знать и обязательно уметь всем пользоваться? И кроме того, что просто уметь, еще и просто пользоваться?

У меня, почему-то такое чувство, что у меня на это уйдет больше времени, чем ушло на то, чтобы я начал писать код своего текущего уровня. Это ужасно.

P.S. Из списка у меня в кармане только первое и четвертое.
  • Вопрос задан
  • 1182 просмотра
Решения вопроса 3
prototype_denis
@prototype_denis
Symfony
<?php

// Постарался упорядочить в порядке уменьшения силы вырывания 
// волос на голове

$power  = null;
$power .= '1. Перейти на PHP 5.6';
$power .= '2. Composer';

// level up

// Пароли? Да... А так не стоит. Вычёркивай.
$power .= '3. Отказаться от md5';

// Да прибудет с тобой ООП.
$power .= '4. Фреймворки!';

// Буквально 5 команд выучишь, ничего сложного
$power .= '5. Разобраться с VCS ';

// level up

$power .= '6. Никогда не лазить в БД на продакшн, использовать миграции';

$power .= '7. Внешние ключи, триггеры и процедуры';

// Про ключики и связи надо раньше узнать, чем о существовании новомодной базы.
$power .= '8. Базы данных (посмотреть другие)';

// Опечатался надеюсь? 
// Точку на 2 слова левее.
$power .= '9. Трейты вместо Array. Генераторы';

// Панацея?
$power .= '10. PHPStorm';

// Это пригодится в командной разработке.
// По началу ты будешь гуглить, как откатить последний коммит
// и будешь пушить только в мастер.
$power .= '11. Начать работать по git workflow
        * Всегда есть стабильная ветка, чьё состояние точно соответствует состоянию продакшна
        * Каждой задаче — своя ветка
        * Ветки могут быть разных типов, в зависимости от типа задачи
        * Любая ветка рано или поздно будет влита в стабильную (тем или иным путём) и/или удалена
';

// level up

// Для следующих перечисленных надо будет уже знать, как писать тесты,
// понимать как работает система контроля версий.
// Осознанно к ним придёшь уже обматерив не один фреймворк.
$power .= '12. Teamcity, Jenkins, Bamboo (инструменты для выкладки релизов)';
$power .= '13. Phing, Capistrano, Ant (сценарии сборки)';

// Если линуха, не вздумай сделать после сборки "make install"
$power .= '14. Поиграться с PHP 7';

$fullPower = (100 * ('0.' . mb_strlen($power, 'UTF-8'))) . '%';

// В $fullPower содержится число характеризующее довольно хорошего разработчика.
Ответ написан
@djay
Композер - это всего лишь утилита, которая достаёт из чужого (или своего) репозитория какой-либо компонент. Затем:

1) скачивает его
2) ложит в папку с вендором
3) автоматически регистрирует автолоадер (PSR-0/PSR-4)

И делается это все одной командой. Можно конечно делать это всё вручную, но очень не удобно (а что если несколько библиотек / компонентов нужно подключить? - волокита и геморой). Причина популярности композера именно в этом. Например Laravel - он использует компоненты Symfony, следовательно при инсталляции он будет брать те самые компоненты с репозитория Симфони.

Здесь главное уловить суть - это сведение подключения сторонних компонентов и библиотке к одной команде. И да, там всего лишь простых несколько команд для этого.

Вдаватся в дополнительные подробности (например в синтаксис composer.json), здесь не имеет смысла, т.к это все есть на официальном сайте.
Ответ написан
sam002
@sam002
Линуксойд, кодер, немного физик.
Раз с composer вам объяснили выше, то облегчу ваш список:
1) Переход полностью прозрачный, главное побольше современных проектов отсматривать.
2) Лучше вычитывайте RFC, играть надо с проектами и демками.
3) Не вместо!!! Про arrays имелся ввиду короткий синтаксис: []
4) В догонку откажитесь от mcrypt и пользуйтесь встроенными решениями для паролей: php.net/manual/ru/book.password.php
5-6) Рекомендую посмотреть на git flow, мне очень нравится для повседневного использования
8-10) Осторожно с выбором инструментов. На мой вкус: netbeans+redmine(с кучей плагинов)+jenkins+bash, но это всё требует долгой и тонкой интеграции в рабочий процесс.
11-12) Вроде бы вы сами всё освоили...
13-14) По БД лучше иметь основательные теоретические знания, чем опыт работы с конкретными реализациями. Но postgresql использовать как дефолтную рекомендую))
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
He11ion
@He11ion
PHP-monkey
Да не учите ничего. "Текущий уровень" вполне позволит вам писать свой лапшекод за миску той же лапши и дальше, в чем проблемы-то?
В середине 2015 года не знать ничего про vcs это сурово.
И да, внезапно можно(а иногда и нужно) жить без миграций, с бэкапами.
Ответ написан
Denormalization
@Denormalization
Конкретно для Laravel:
  • На сайте laravel есть подробная инструкция по установке.
  • На сайте laravel есть инструкция по настройке homestead.
  • По laravel снято миллион+1 видео laracasts


Общее:
По каждой технологии есть куча документации и примеров. Если вы не можете их найти, а тем более осилить - вы никудышный програмист, увольняйтесь и идите работать в макдак.
Ответ написан
leto2015
@leto2015
Программист
В конце текста той статьи есть приписка "P.S. Не воспринимайте тест всерьёз, всё-таки пятница!".
Следует пользоваться инструкцией Крылова для прочт...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы