Смотри, вот как должен выглядеть современный PHP

PHP Composer
Это статья, переведенная сообществом, и перевод был завершен. Для получения дополнительной информации, пожалуйста, нажмитеВведение в совместный перевод.

file

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

Я вижу реальные изменения в том, как разработчики работают с PHP, не только из-за новой версии PHP и ее постепенного улучшения, язык PHP претерпел огромные изменения, став более зрелым и крепким, и, что более важно, вся экосистема Системы постоянно меняется.

Переведено jorninitor 3 дня назад 0 ретранслировать Зависит отSummerрассмотрение

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

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

Итак, мне потребовалось некоторое время, чтобы начать использовать такие инструменты, как Composer и PHPUnit. Я открыл для себя эти блестящие новые вещи около года назад.

Сначала PSR, потом Composer, PHPUnit, Travis-ci и еще несколько библиотек и замечательных инструментов. Я даже начал использовать IDE (Vim FTW, но PHPStorm с XDebug — разумная рабочая среда)!

Переведено andy1908 3 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Что такое модернизация?

fileавтор:Karen Roe (Flickr) [CC BY 2.0 (Creative Commons.org/licenses/не…)]

В Интернете есть тонны статей о том, насколько ужасен PHP, насколько плохой будет ваша жизнь, если вы будете программировать на PHP, насколько уродлив этот язык и обо всем, что только можно придумать!

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

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

Я начал создавать SDK для внутреннего API для компании, в которой я работаю, например, в качестве домашнего проекта, и решил следовать рекомендациям. Я уже участвую в большинстве событий, но я внес некоторые изменения в некоторые вещи. Эти изменения и то, что я узнал за последний год, являются предметом этой статьи, которую я называю «Модернизация PHP».

Переведено XiaolonY 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Начнем с рабочего процесса

file

Как я уже сказал, я давно не использую IDE, но с тех пор, как я использовал IDE, я влюбился в них. PHPStorm — это шедевр программного обеспечения. С тех пор это будет моя первая и единственная IDE. Это была моя первая попытка, и она была настолько хороша, что мне не пришлось пробовать другую IDE.

Интегрированный XDebug просто идеален, как и разрешение пространства имен PHP, composer, git, автодополнение кода, генерация кода, рефакторинг кода. Позвольте мне сказать, что трех дней и трех ночей недостаточно.

Я не думаю, что вам нужно использовать IDE, на самом деле это полностью личное мнение. Вам нужно использовать что-то подобное, соответствующее вашим потребностям, например: Vim, Atom, Emacs, Bracket, NetBeans, PHPStorm, Eclipse и т. д. Два важных момента — это производительность и эргономика. Ваша IDE или текстовый редактор должны помогать вам, а не тянуть вас вниз.

Однако важным моментом для меня является интеграция функций отладки. Для написания большого проекта (а на самом деле небольших проектов) вам понадобится хороший инструмент отладки. давай забудем техvar_dumpа такжеprint_r. Вам нужно установить значения переменных, проанализировать стек и установить точки останова во время выполнения кода. Это очень важно, они облегчают разработку и рефакторинг. Переведено netAir 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Я даже не знаю, есть ли другие варианты, в XDebug есть все, что вам нужно. У тебя сейчас есть время? Если вы еще не сделали этого, найдите время, чтобы установить XDebug и интегрировать его в свою IDE. Теперь используйте правильные инструменты для отладки кода.

Еще один инструмент, на который я хочу обратить ваше внимание, — это Github. Можно было бы написать целую статью о том, насколько хороши Git и Github и почему вы должны начать использовать контроль версий для управления своим кодом, но здесь я хочу показать вам еще одну причину.

Дело в том, что интеграция (GitHub Integration, примечание переводчика).

В Github интегрировано несколько других инструментов, и вы должны начать их использовать. Во время непрерывной интеграции эти инструменты могут генерировать для вас данные, запускать тесты, запускать задачи и выполнять множество других действий в вашем рабочем процессе. Интеграция — хороший повод начать использовать Github, все остальное пока можно отложить в сторону.

Переведено andy1908 3 дня назад 0 ретранслировать Зависит отSummerрассмотрение

управление зависимостями

file

Еще одним аспектом современной экосистемы PHP является управление зависимостями, откуда и появился Composer.

Composer 5 лет, но массовому внедрению еще почти два года. Вероятно, это потому, что я не использовал его раньше, или потому, что большинство PHP-разработчиков придерживаются статус-кво.

Это терминал Packagist, а Packagist — это репозиторий пакетов PHP, состоящий из библиотек PHP, проектов и инструментов, а исходный код хранится в Github (или BitBucket и т. д.).

Все сторонние библиотеки, рассмотренные в этой статье, могут быть легко добавлены в ваш проект.

$ composer require package_vendor/package_name
Если вы не знаете имя сторонней библиотеки, вы можете использоватьsearchНаходить.
$ composer search package_name
Composer — отличный способ управления зависимостями, но дело не только в этом. Найдите минутку, чтобы установить Composer и прочитать егоДокументация. Переведено zhenry 2 дня назад 0 ретранслировать

Удобный интерфейс командной строки

Очень хотелось бы попробовать идею быстрого интерфейса CLI. Для меня лучший инструмент REPL — этоIPython.该工具可自动完成你的代码,让你轻松定义函数,悠闲地访问文档,还有其他的多个惊艳的特性。对我们不利的是,该工具用于 Python 而非 PHP。

В мире PHP есть нечто, называемое «интерактивным режимом», доступ к которому можно получить через инструмент терминала, просто набрав:

$ php -a
Interactive mode enabled
php >

В этом сценарии вы находитесь в интерактивном режиме и можете начать тестирование некоторых вещей. Этот режим работает, но он слишком неинтуитивен. Я все еще пытался несколько раз, и, поскольку я знал, на что способен IPython, я бы вообще не стал продолжать использовать этот режим.

К счастью, есть новый классный инструмент CLI (интерфейс командной строки) под названием Psysh. Psysh — это удивительный инструмент, полный привлекательных функций, которые можно установить глобально или для каждого проекта с помощью composer.

Лучшей функцией Psysh для меня является функция встроенной документации. Запрашивать документацию PHP-функции напрямую, не заходя на веб-сайт Php.net, — это здорово. Недостатком является то, что вам нужно сделать еще несколько вещей, прежде чем вы сможете пользоваться всеми функциями.

После установки инструмента введите следующие команды для правильной работы (здесь я использую Debian, который может подойти не всем):

$ apt-get install php7.1-sqlite3
$ mkdir /usr/local/share/psysh
$ wget <http://psysh.org/manual/en/php_manual.sqlite> -o /usr/local/share/psysh/php_manual.sqlite
Переведено bigqiang 2 дня назад 0 ретранслировать Зависит отSummerПросмотр первой команды не является обязательным, и вы можете пропустить этот шаг, если у вас уже установлен Sqlite. Вторая команда создает каталог для хранения документа, а третья команда загружает и сохраняет документ в ранее созданный каталог. Помните, что все эти команды должны начинаться сrootзапустить как личность.

Теперь у вас есть это:

file psyshСкриншот описания документации инструкции, показывающий оjson_decodeИнформация. Нажмите на эту ссылку, чтобы перейти кPsyshУзнайте больше об этом замечательном инструменте. Переведено GhostCoder 3 дня назад 0 ретранслировать

вы должны начать тестирование

Это мантра, которую я говорю себе каждый день. Как и многие люди, я не последовал совету TDD по тестированию кода. Я уже повадился тестировать, и это продолжается уже полгода, но до этого еще далеко.

Когда я столкнулся со сложным унаследованным проектом, я решил изучить тестирование. Этот код проекта был настолько странным, что каждый раз, когда я добавлял какой-то код, он шел не так. С новыми функциями? Внедряйте функции и создавайте проблемы! Исправить ошибку или создать новую.

Это большая проблема, я веще один, и именно я начал пробовать использовать тест. Первый инструмент, который я хочу порекомендовать, этоPHPUnit. Как показывает официальный сайт:
PHPUnit — это среда тестирования PHP для программистов.
PHPUnit — это среда модульного тестирования, которая реализует архитектуру xUnit.
Переведено Yan Fei 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Итак, PHPUnit — это фреймворк для создания унифицированных тестов для вашего проекта, он предоставляет некоторые функции для тестирования вашего кода и получения красивого вывода.

Поскольку я начал думать о тестировании, читать и говорить об этом с людьми, я нашел еще один отличный инструмент, который дополнит вашу работу в этих унифицированных тестах. Это Behat, BDD-фреймворк для PHP.

BDD (Behavior Driven Development) — это процесс разработки, производный от TDD (Test Driven Development). Эти аббревиатуры сейчас не имеют значения, важно то, что вы можете указать свой тест на более естественном языке, который может понять человек, не являющийся техническим специалистом.

Этот язык называется Gherkin и используется для описания ожидаемого поведения при тестировании с использованием описания теста Gherkin следующим образом:

file

За этими строками следует код PHP, который вызывается только в том случае, если есть совпадение между строкой, указанной в PhpDoc для этого метода, и регулярным выражением. Код использует ваш SDK, приложение или веб-систему для реализации этих шагов и того, что сделал бы реальный пользователь.

Переведено Yan Fei 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Рабочий процесс Behat гладкий. Как только все правильно настроено, можно приступать к написанию всех возможных сценариев тестирования функциональности. Когда вы запускаете Behat в первый раз, он предоставляет вам шаблоны для всех методов, которые вы должны добавить в класс контекста PHP для реализации каждого шага в сценарии.

После этого вы можете написать фактический код для каждого шага и повторить цикл.

  • Напишите PHP-код для каждого шага
  • запустить тест
  • Если все пойдет хорошо, напишите PHP-код для других шагов.
  • Если что-то пойдет не так, исправьте это

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

Переведено GhostCoder 3 дня назад 0 ретранслировать

Непрерывная интеграция

Непрерывная интеграция (CI) — это процесс, который предоставляет инженерам-программистам метод создания программного обеспечения.

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

Интегрируйте свой проект Github в Travis CI всего несколькими щелчками мыши, и каждый раз, когда вы отправляете код в репозиторий, он будет запускать созданные вами файлы PHPUnit и Behat и сообщать вам, готова ли последняя функция, или нет, или будет объединена. В дополнение к этому вы можете использовать Travis CI для развертывания своего кода для запуска в рабочей среде.

Замечательно иметь рабочий процесс с четко определенным рабочим процессом, и Travis CI помогает нам в этом. прочитай этоGetting started, интересно понять процесс разработки ПО, а не только сам код. Переведено 2 дня назад 0 ретранслировать

Следите за PSR-1 и PSR-2

Если вы слышали о PSR, вы должны знать об этом сразу. На самом деле, PSR — это сокращение от «Стандартные рекомендации PHP», которые определяютсяPHP-FIG(Группа взаимодействия PHP Framework). PHP-FIG — это организация, состоящая из участников некоторых крупных PHP-проектов, фреймворков и CMS, цель которой — думать о будущем, экологии языка и обсуждать стандарты, которым следует следовать в языке.

Долгое время в PHP не было стиля кодирования. Я еще не очень стар, но каждый раз, когда я смотрю на чей-то проект или библиотеку, они используют другой стиль кодирования. Иногда фигурная скобка находится в этой позиции, иногда на следующей строке, есть несколько способов обработки длинной строки, и все виды стилей кодирования и предпочтений смешиваются вместе, и это беспорядок.

PHP-FIG проделал большую работу, и, введя единый стандарт кодирования, они, кажется, говорят: «Не беспокойтесь больше о стиле кодирования, давайте все будем следовать стандарту, а затем сосредоточимся на создании хорошего программного обеспечения». . Теперь, всякий раз, когда вы хотите прочитать чей-то код, вам нужно заботиться только о том, как он работает, и перестать обвинять его стиль и структуру кода.

На момент публикации этой статьи было выпущено девять согласованных стандартов PSR, обеспечивающих общие решения общих проблем. Если вы еще не знакомы с этими стандартами, начните сPSR-1 а также PSR-2Давайте начнем. Переведено andy1908 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

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

PHP CodeSnifferэто инструмент, который вы можете найти на Packagist и установить с помощью Composer. Я не думаю, что название этой библиотеки идеально, потому что на самом деле оно содержит два инструмента: phpcs и phpcbf.

Phpcs используется для определения стиля кода, он сканирует ваш код по всем направлениям, чтобы найти те части, которые не соответствуют настроенным стандартам кодирования.

Вы можете использовать многие из соглашений о кодировании, встроенных в phpcs, или вы можете настроить соглашения о кодировании. В конце сканирования будут перечислены фрагменты кода, которые не соответствуют стандартам кодирования, и это здорово.

Итак, как можно исправить ошибку? Вы можете открыть каждый файл, изменить код, снова запустить phpcs, посмотреть, есть ли еще ошибки, и повторить процесс. очень скучный.

Для решения этой проблемы PHP CodeSniffer предоставляет другой инструмент, который называется phpcbf или PHP Code Beautifier. Запустите phpcbf с тем же набором правил кодирования, и он сделает все возможное, чтобы исправить все ошибки за вас, не нарушая ваш код.

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

Переведено andy1908 2 дня назад 0 ретранслировать Зависит отSummerрассмотрение

Рамка

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

Если вам нужен HTTP-клиент, вы можете использовать Guzzle. Если вам нужно использовать механизм шаблонов, вы можете использовать Twig. Если вам нужен маршрут, просто найдите компонент, который соответствует вашим потребностям, и используйте его. Соберите эти компоненты и создайте собственное приложение.

SymfonyФреймворк проделал большую работу в этом направлении. Вы можете использовать весь фреймворк для своего проекта или просто выбрать и использовать те части, которые хотите использовать. Это так просто.

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

Мой выбор микрофреймворкаSlimframework, я думаю, вы должны прочитать это. Для работы с небольшими проектами это действительно просто, но для больших проектов это немного сложнее.

Кстати, для тех из вас, кто готовится программировать, я действительно считаю, что перед тем, как выбрать фреймворк и планировать использовать его постоянно, вам стоит начать создавать свой собственный фреймворк. Это даст вам понимание того, как работает фреймворк, и поможет быстрее адаптироваться к более крупным фреймворкам.

LOST Переведено 3 дня назад 0 ретранслировать Зависит отrayleрассмотрение

Современный инструментарий PHP

Завершим серию комплектов к статье. Для меня эти компоненты, инструменты и библиотеки PHP выглядят современно:

  • Slimframework: Очень хорошая, крутая маленькая рамка
  • Symfony: Тяжелая структура, состоящая из множества отличных компонентов многократного использования.
  • Guzzle:: Клиент, который может легко инициировать HTTP-запросы
  • PHPUnit: среда тестирования
  • Behat: Платформа тестирования на основе поведения
  • PHPCS/CBF: Спецификация кода, инструменты для украшения
  • Faker: библиотека для генерации тестовых данных
  • Psysh: полный удивительных интерактивных консолей
  • Composer: управление зависимостями и множество других полезных функций.
  • Packagist: Репозиторий пакетов PHP
  • Twig: шаблонизатор

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

Переведено Linz 3 дня назад 0 ретранслировать Зависит отSummerрассмотрение
Все переводы в этой статье предназначены только для обучения и общения, при перепечатке обязательно указывайте переводчика, источник и ссылку на эту статью.
Наша работа по переводу следуетСС соглашение, если наша работа нарушает ваши права, пожалуйста, свяжитесь с нами вовремя.