Введение
- Список тестовых заданий от разных компаний
- Установка RDP сервера
- Установка chrome на *unix
- Установка Visual Studio Code на Linux
- Утилита make
- репозиторий php-package (репозиторий, содержащий базовую структуру проекта на PHP)
- гайд, посвященный VIM
Установка PHP
- Установка PHP
- sudo apt update
- sudo apt install php
- Ввод версии: php -v
- утилита phpbrew (Утилита позволяет удобно переключаться между версиями. Такое может быть нужно когда вы одновременно работаете над двумя проектами, требующими разные версии PHP)
Подробнее о PHP
- Cпецификациия PHP
- Интерпретатор https://github.com/peachpiecompiler/peachpie – он позволяет запускать PHP программы на платформе .NET.
- PHP:
- Интерпретируемый – отсутствуе ткомпиляция (внешне)
- Динамический – проверка типов в PHP происходит в момент выполнения кода
- Слабо типизированный – автоматически приводит типы там, где считает нужным (описано в спецификации)
- Что такое компиляция
- Что такое интерпретация
- Синтаксис языка – совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.
- Семантика языка – совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание.
Composer
- Composer (управление зависимостями) для каждой операционной системы описан в официальном руководстве:
- Репозиторий (Registry) – хранилище пакетов PHP, которое называется Packagist.
- Установка composer
- Выполнить следующий код
- php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
- php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
- php composer-setup.php
- php -r “unlink(‘composer-setup.php’);”
(ссылка) - mv composer.phar /usr/local/bin/composer
(ссылка)
- Нюансы
- Проверка установки which phploc (Unix-утилита, отображающая полный путь к указанным командам или сценариям).
- Для работы composer необходимо добавить строчку кода в файл .profile (vi ~/.profile) PATH=”$PATH:$HOME/.composer/vendor/bin”
- Выполнить следующий код
- Установка git – sudo apt update | sudo apt install git
- Установка curl – sudo apt install curl
Управление зависимостями
- 2 секции файла composer.json
- composer require …- библиотеки для готовой программы
- composer require –dev …- библиотеки для этапа разработки
- зависимости будут располагаться в папке vendor (ее необходимо поместить в .gitignore)
- Для инициализации библиотек из зависимостей необходимо выполнить команду composer install в папке проекта
- Документация по публикации пакета в packagist.org: https://packagist.org/packages/submit
- Правило версионирования пакетов semver (нумерация версий)
Автозагрузка
- рекомендуемые практики:
- Пакет именуется в “шашлычной нотации” (kebab-case).
- Каждый пакет может выставлять наружу только одно пространство имён, что снижает риск пересечения с другими пакетами, а также позволяет легко определить принадлежность пространства имён к пакету. В терминологии стандарта PSR-4, такое пространство имён называется “vendor namespace”.
- Пространства имён именуются в стиле StudlyCaps и напрямую отображаются на файловую систему. Исключением является корневое пространства имён, которое получается путём трансформации имени пакета.
- Исходный код проекта находится в папке src, а тесты в директории tests.
- Что бы ни хранилось внутри файлов, именование файлов в стиле StudlyCaps (например,
MySuperFile.php
).
- Пример файла composer.json
{
“name”: “hexlet/pairs”,
“autoload”: {
“files”: [
“src/Pairs.php”,
“src/Lists.php”
]
}
} - Подключение автозагрузки composer: в начале входного файла проекта нужно прописать строчку require __DIR__ . ‘/../vendor/autoload.php’
—–
При изменении файлов из autoload необходимо выполнить команду: composer dump-autoload - Самостоятельная работа
- Установка PHP (ссылка)
- sudo apt-get install software-properties-common python-software-properties
- sudo add-apt-repository -y ppa:ondrej/php
- sudo apt-get update
- sudo apt-get install php7.2 php7.2-cli php7.2-common
- Клонирование репозитория: git clone path-to-repository
- Разруливание ошибок:
- “the requested PHP extension curl is missing from your system ” – sudo apt-get install php7.2-curl
- “the requested PHP extension dom is missing from your system” – sudo apt-get install php7.2-xml
- “the requested PHP extension mbstring is missing from your system” – sudo apt-get install php7.2-mbstring
- Установка PHP (ссылка)
Lock файл
- Обновление зависииостей – команда: composer update
- Обновление конкретной зависимости: composer update vendor-name/project-name
- Примео 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”: “” } } ] - Смысл lock файла – автоматическая фиксация версий библиотек транзитивных зависимостей при первоначальной установке зависимостей.
Скрипты
- Composer в контекст выполнения команды scripts файла composer.json добавляет путь /vendor/bin в $PATH (только для текущего вызова!)
- Пример вызова скрипта с передачей параметра: composer run-script phpcs — –standard=PSR12
- Примеры хуков(более подробно здесь)
- pre-package-install
- post-package-install
- pre-package-update
- post-package-update
- pre-package-uninstall
- post-package-uninstall
Исполняемые файлы в пакетах
- cli-утилиты – пакеты-приложения командной строки
- “bin”: [“bin/php-package”] (пример секции файла composer.json) – Эта запись означает, что при установке пакета в операционной системе будет физически создан файл (а точнее, его особая разновидность — символическая ссылка) с именем php-package, запуск которого приведёт к запуску файла вашего проекта по адресу bin/php-package. Как можно заметить, имя ссылки задаётся именем файла (совпадает с ним). Также обратите внимание, что ссылок может быть множество (столько, сколько сами укажите в секции bin).
- Выгрузка на github (краткая инструкция, pdf)
- Выгрузка
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 - Загрузки изменений
git pull
- Выгрузка
- Расположение символической ссылки при глобальной установке $HOME/.composer/vendor/bin (путь к этому каталогу надо самостоятельно прописать в переменной окружения PATH)
- В зависимости от версии composer директория по умолчанию может различаться
- Расположение директории можно настраивать (ссылка)
- Указание интерпретатора для исполняемого файла – шебанг – #!/usr/bin/env php
- Посмотреть, в какую конкретно директорию composer складывает ссылки на исполняемые файлы – composer [global] config bin-dir