Вот как должен выглядеть современный php (2)

задняя часть PHP контрольная работа Travis CI
Вот как должен выглядеть современный php (2)

Эта статья из среды — ссылка на исходный текст; добро пожаловать в нашу учебную группу php&Laravel: 109256050

вам нужно начать использовать тест

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

Я решил изучить тестирование, работая над сложным унаследованным проектом. Код настолько хрупкий и жесткий, что, как только мы добавим какой-то код, он сломается. новые особенности? Сделай и сломай что-нибудь! Исправить ошибки? Создайте еще один.

Это большой вопрос, и я начал пытаться тестировать.

Первый инструмент — PHPUnit. как указано на официальном сайте

PHPUnit — это фреймворк для тестирования PHP, ориентированный на программистов.

Это экземпляр схемы xUnit среды модульного тестирования.

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

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

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

Этот язык называется Джерным и используется для описания ожидаемого поведения в соответствии с тестом. Использование Джеркина выглядит так

За этими описаниями всякий раз, когда указанный метод в phpdoc имеет регулярный шаблон, соответствующий соответствующему коду PHP, он будет вызываться через SDK, приложение или веб-систему, этот код реализует эти шаги, и симулированный реальный пользователь будет выполнять

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

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

  • php-код для реализации шага
  • запустить тест
  • Если он работает нормально, продолжайте реализовывать следующий php-код.
  • Если есть исключение, исправьте его

Через полтора часа настройки и прочтения документации можно приступать к использованию Behat, к концу все что вы видите это php код и вы уже умеете его писать

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

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

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

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

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

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

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

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

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

В конце статьи в общей сложности 9 принятых PSR являются рекомендуемыми решениями общих проблем. Но если вы не знаете этих стандартов, используйте PSR-1 и PSR-2 в качестве отправной точки.

Эти стандарты предлагают современный стиль кодирования PHP. Обязательно прочтите их, прежде чем начать их использовать. Не думайте, что вы запомните весь код по мере его написания, это процесс, но для того, чтобы вы были уверены в используемых вами спецификациях, существуют инструменты, которые могут вам в этом помочь. PHP CodeSniffer — это инструмент, вы можете найти его на Packagist, используйте Composer для его установки. Я не думаю, что это имя библиотеки является лучшим выбором, потому что оно содержит два разных инструмента, phpcbf PHPC.

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

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

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

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

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

Рамка

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

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

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

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

Я предпочитаю микрофреймворк Slimframework, который, я думаю, должен попробовать каждый.

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

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

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

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

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