PHP: Настройка окружения (Конспект Hexlet)

Введение 

  1. Список тестовых заданий от разных компаний
  2. Установка RDP сервера
  3. Установка chrome на *unix
  4. Установка Visual Studio Code на Linux
  5. Утилита make
  6. репозиторий php-package (репозиторий, содержащий базовую структуру проекта на PHP)
  7.  гайд, посвященный VIM

Установка PHP 

  1. Установка PHP
    1. sudo apt update
    2. sudo apt install php
  2. Ввод версии: php -v
  3. утилита phpbrew (Утилита позволяет удобно переключаться между версиями. Такое может быть нужно когда вы одновременно работаете над двумя проектами, требующими разные версии PHP)

Подробнее о PHP 

  • Cпецификациия PHP
  • Интерпретатор https://github.com/peachpiecompiler/peachpie — он позволяет запускать PHP программы на платформе .NET.
  • PHP:
    • Интерпретируемый — отсутствуе ткомпиляция (внешне)
    • Динамический — проверка типов в PHP происходит в момент выполнения кода
    • Слабо типизированный — автоматически приводит типы там, где считает нужным (описано в спецификации)
  • Что такое компиляция
  • Что такое интерпретация
  • Синтаксис языка — совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.
  • Семантика языка — совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание.

Composer

  1. Composer (управление зависимостями) для каждой операционной системы описан в официальном руководстве:
    1. https://getcomposer.org/download/
    2. https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
  2. Репозиторий (Registry) — хранилище пакетов PHP, которое называется Packagist.
  3. Установка composer
    1. Выполнить следующий код
      1. php -r «copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);»
      2. php -r «if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;»
      3. php composer-setup.php 
      4. php -r «unlink(‘composer-setup.php’);»
        (ссылка)
      5. mv composer.phar /usr/local/bin/composer
        (ссылка)
    2. Нюансы
      1. Проверка установки which phploc (Unix-утилита, отображающая полный путь к указанным командам или сценариям).
      2. Для работы composer необходимо добавить строчку кода в файл .profile (vi ~/.profile) PATH=»$PATH:$HOME/.composer/vendor/bin»
  4. Установка git — sudo apt update | sudo apt install git
  5. Установка curl — sudo apt install curl

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

  1. 2 секции файла composer.json
    1. composer require …- библиотеки для готовой программы 
    2. composer require —dev …- библиотеки для этапа разработки
  2. зависимости будут располагаться в папке vendor (ее необходимо поместить в .gitignore)
  3. Для инициализации библиотек из зависимостей необходимо выполнить команду composer install в папке проекта
  4. Документация по публикации пакета в packagist.org: https://packagist.org/packages/submit
  5. Правило версионирования пакетов semver (нумерация версий)

Автозагрузка

  1. рекомендуемые практики:
    1. Пакет именуется в «шашлычной нотации» (kebab-case).
    2. Каждый пакет может выставлять наружу только одно пространство имён, что снижает риск пересечения с другими пакетами, а также позволяет легко определить принадлежность пространства имён к пакету. В терминологии стандарта PSR-4, такое пространство имён называется «vendor namespace».
    3. Пространства имён именуются в стиле StudlyCaps и напрямую отображаются на файловую систему. Исключением является корневое пространства имён, которое получается путём трансформации имени пакета.
    4. Исходный код проекта находится в папке src, а тесты в директории tests.
    5. Что бы ни хранилось внутри файлов, именование файлов в стиле StudlyCaps (например, MySuperFile.php).
  2. Пример файла composer.json
    {
    «name»: «hexlet/pairs»,
    «autoload»: {
    «files»: [
    «src/Pairs.php»,
    «src/Lists.php»
    ]
    }
    }
  3. Подключение автозагрузки composer: в начале входного файла проекта нужно прописать строчку require __DIR__ . ‘/../vendor/autoload.php’
  4. Самостоятельная работа
    1. Установка PHP (ссылка)
      1. sudo apt-get install software-properties-common python-software-properties
      2. sudo add-apt-repository -y ppa:ondrej/php
      3. sudo apt-get update
      4. sudo apt-get install php7.2 php7.2-cli php7.2-common
    2. Клонирование репозитория: git clone path-to-repository
    3. Разруливание ошибок:
      1. «the requested PHP extension curl is missing from your system » — sudo apt-get install php7.2-curl
      2. «the requested PHP extension dom is missing from your system» — sudo apt-get install php7.2-xml
      3. «the requested PHP extension mbstring is missing from your system» — sudo apt-get install php7.2-mbstring

Lock файл

  1. Обновление зависииостей — команда: composer update
  2. Обновление конкретной зависимости: composer update vendor-name/project-name
  3. Примео lock файла
    { «_readme»: [ «This file locks the dependencies of your project to a known state», «Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file», «This file is @generated automatically» ], «content-hash»: «ab2dac1e4b8d91d81b2295ca726e9499», «packages»: [ { «name»: «tightenco/collect», «version»: «v5.5.27», «source»: { «type»: «git», «url»: «https://github.com/tightenco/collect.git», «reference»: «07d58f7f663d5033a08541f9c481d33ad3f514a5» }, «dist»: { «type»: «zip», «url»: «https://api.github.com/repos/tightenco/collect/zipball/07d58f7f663d5033a08541f9c481d33ad3f514a5», «reference»: «07d58f7f663d5033a08541f9c481d33ad3f514a5», «shasum»: «» } } ]
  4. Смысл lock файла — автоматическая фиксация версий библиотек транзитивных зависимостей при первоначальной установке зависимостей.

Скрипты

  1. Composer в контекст выполнения команды scripts файла composer.json добавляет путь /vendor/bin в $PATH (только для текущего вызова!)
  2. Пример вызова скрипта с передачей параметра: composer run-script phpcs — —standard=PSR12
  3. Примеры хуков(более подробно здесь)
    1. pre-package-install
    2. post-package-install
    3. pre-package-update
    4. post-package-update
    5. pre-package-uninstall
    6. post-package-uninstall

Исполняемые файлы в пакетах

  1.  cli-утилиты — пакеты-приложения командной строки
  2. «bin»: [«bin/php-package»] (пример секции файла composer.json) — Эта запись означает, что при установке пакета в операционной системе будет физически создан файл (а точнее, его особая разновидность — символическая ссылка) с именем php-package, запуск которого приведёт к запуску файла вашего проекта по адресу bin/php-package. Как можно заметить, имя ссылки задаётся именем файла (совпадает с ним). Также обратите внимание, что ссылок может быть множество (столько, сколько сами укажите в секции bin).
  3. Выгрузка на github (краткая инструкция, pdf)
    1. Выгрузка

      git init
      git add your_file
      git commit -m «first commit»
      git remote add origin https://github.com/you_repository/you_project
      git push -u origin master

    2. Загрузки изменений

      git pull

  4. Расположение символической ссылки при глобальной установке $HOME/.composer/vendor/bin (путь к этому каталогу надо самостоятельно прописать в переменной окружения PATH)
    1. В зависимости от версии composer директория по умолчанию может различаться
    2. Расположение директории можно настраивать (ссылка)
  5. Указание интерпретатора для исполняемого файла — шебанг#!/usr/bin/env php
  6. Посмотреть, в какую конкретно директорию composer складывает ссылки на исполняемые файлы — composer [global] config bin-dir

Добавить комментарий

Ваш e-mail не будет опубликован.

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