Руководство по docker compose для начинающих

install #

Команда считывает из текущего каталога, решает зависимости и устанавливает их в .

php composer.phar install

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

Если файл отсутствует, Composer создаст его после разрешения зависимостей.

Опции

  • —prefer-source: Есть два способа загрузки пакета: и . Для стабильных версий Composer будет использовать по умолчанию. Источник — это репозиторий управления версиями. Если включен параметр , Composer будет устанавливать , если он есть. Это полезно, если вы хотите внести исправление в проект и получить непосредственно локальный git-клон зависимости.
  • —prefer-dist: реверс , Composer будет устанавливать с , если это возможно. Это может ускорить процесс установки существенно на серверах сборки и других случаях использования, где вы обычно не запускаете обновления поставщиков. Это также способ обойти проблемы с git, если у вас нет надлежащей настройки.
  • —dry-run: если вы хотите выполнить установку без фактической установки пакета, вы можете использовать . Это будет имитировать установку и показать вам, что произойдет.
  • —dev: Установить пакеты, перечисленные в (это поведение по умолчанию).
  • —no-dev: Пропустить установку пакетов, указанных в . Генерация автозагрузчика пропускает правила автозагрузки.
  • —no-autoloader: пропустить автозагрузчик.
  • —no-scripts: пропускает выполнение сценариев, определенных в .
  • —no-progress: Удаляет отображение прогресса, которое не может обрабатывать обратные символы.
  • —no-suggest: пропускает предложенные пакеты в вывод.
  • —optimize-autoloader (-o): преобразовать автозагрузку PSR-0/4 в classmap, чтобы получить более быстрый автозагрузчик. Это рекомендуется, особенно для производства, но не может тратить время на запуск.
  • —classmap-authoritative (-a): Автозагрузка классов только из класса. Неявно включает опцию .
  • -apcu-autoloader: использовать APCu для кэширования найденных / не найденных классов.
  • —ignore-platform-reqs: игнорировать требования , , и и принудительно выполнить установку, даже если локальная машина их не выполняет. См. Также параметр конфигурации платформы.

Пакеты платформы

Composer поддерживает пакеты платформы, которые на самом деле являются
виртуальными пакетами для всего того, что установлено в системе, но в реальности
не устанавливаются с помощью Composer. Сюда входят непосредственно сам PHP, его
расширения и некоторые системные библиотеки.

  • представляет PHP-версию пользователя, что позволяет применять
    ограничения на использование пакета, например, . Чтобы потребовать
    64-битную версию PHP, вам может потребоваться пакет .

  • представляет версию среды выполнения HHVM и позволяет применить
    ограничение, например, .

  • позволяет вам запрашивать PHP-расширения (включая расширения
    ядра). В данном случае версионирование могут быть совершенно несовместимо,
    поэтому часто рекомендуется установить ограничение на значение . Примером
    имени пакета расширения является .

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

Вы можете использовать для получения списка
доступных локально пакетов платформы.

Номер один

Язык программирования Python возглавил рейтинг компании Tiobe, оценивающей языки по степени их популярности среди программистов. Рейтинг существует с 2003 г., хотя при составлении самых первых его версий авторы руководствовались данными за последние два года (с июня 2001 г.). До первого места Python добрался впервые, сделав это в октябре 2021 г.

К этому историческому событию Python шел планомерно, обходя одного соперника за другим. Сложнее всего было обогнать двух основных конкурентов – в июле 2021 г. он вплотную подобрался к Java, остановившись на третьем месте, а к сентябрю 2021 г. Python сбросил Java на третью строчку. Последним соперником на пути к вершине был язык С, и на тот момент отставание от него тоже было минимальным.

Программисты всего мира сделали свой выбор

В сравнении с июлем 2021 г. рейтинг Python вырос с 10,95% до 11,27%. Что до С, то его популярность упала с 11,62% до 11,16%. Java по-прежнему удерживает третью строчку с результатом 10,46% против 11,17% в июле 2021 г.

«Давняя гегемония Java и C закончилась. Python, который первоначально был всего лишь простым языком сценариев и рассматривался исключительно как альтернатива Perl, эволюционировал. Простота обучения, огромное количество библиотек и широкое использование во всех областях сделали его самым популярным языком программирования на сегодняшний день», – заявил Пол Янсен (Paul Jansen), генеральный директор Tiobe.

10 | Вы не уделяете внимания деталям

Если вы игнорируете детали и не замечаете мелочей, вы никогда не станете успешным программистом.

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

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

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

Говорят, дьявол в деталях. И в программировании это действительно так.

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

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

Синтаксис и опции Composer

Первое, что необходимо сказать, Composer — это консольная утилита, у неё нет графического интерфейса, однако это не делает её хуже. Вот её синтаксис:

$ composer опции команда

Опций у самой утилиты не так уж много. Давайте рассмотрим самые полезные:

  • -h — вывести справку по утилите;
  • -q — сокращённый вариант вывода;
  • -V — показать версию утилиты;
  • -n — не задавать интерактивных вопросов;
  • -v, -vv, -vvv — настройка подробности вывода;
  • -d — использовать указанную рабочую директорию.

Более интересны команды, которые вы будете постоянно использовать:

  • archive — архивирует текущий проект в качестве библиотеки для отправки в Сеть;
  • check-platform-reqs — проверяет, соблюдены ли системные требования;
  • create-project — создаёт проект на основе пакета в указанную директорию;
  • depends — выводит зависимости пакета;
  • dump-autoload — обновляет систему автозагрузки классов;
  • exec — позволяет выполнять скрипты из установленных пакетов;
  • init — создаёт пустой проект в текущей папке;
  • list — выводит список доступных команд;
  • outdated — выводит список пакетов, для которых есть обновления;
  • prohibits — выводит названия пакетов, которые мешают установить указанный пакет;
  • search — поиск пакетов в репозиториях;
  • self-update — обновление Composer до последней версии, работает только при локальной установке;
  • show — информация о пакете;
  • update — обновляет все пакеты до самой актуальной версии.

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

prohibits #

Команда указывает, какие пакеты блокируют установку данного пакета. Укажите ограничение версии, чтобы проверить, могут ли обновления выполняться в вашем проекте, и если нет, то почему нет. См. Следующий пример:

php composer.phar prohibits symfony/symfony 3.1
 laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*)

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

php composer.phar prohibits php:8
 doctrine/cache v1.6.0 requires php (~5.5|~7.0)
 doctrine/common v2.6.1 requires php (~5.5|~7.0)
 doctrine/instantiator 1.0.5 requires php (>=5.3,<8.0-DEV)

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

Опции

  • —recursive (-r): рекурсивно разрешает до корневого пакета.
  • —tree (-t): печатает результаты как вложенное дерево, подразумевает -r.

Путь наверх

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

Рейтинг Tiobe за октябрь 2021 года

Составители рейтинга учитывают различные слова в запросах пользователей, включая language (язык) и programming (программирование). Они берут у крупнейших поисковиков в мире – Google, Bing и др., а также на самых популярных сайтах на всей планете. Их они берут из рейтинга Alexa.

Python присутствует в рейтинге с момента выпуска его самой первой версии. За более чем 20 лет Python почти всегда был в топ-10, и лишь в феврале 2013 г. опустился на 13 строчку. Это наихудший его показатель за все прошедшие годы.

Python также не раз удостаивался звания «Язык года», присваиваемого языкам экспертами Tiobe. Эту награду он получал в 2007, 2010, 2018 и 2020 гг. Это чаще в сравнении с языком С (2008, 2017 и 2019 гг.) и Java (2005 и 2015 гг.).

Более того, это чаще на фоне в принципе всех языков, участвующих в рейтинге Tiobe.

composer.json: настройка проекта

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

Ключ

Первое (и часто единственное), что обычно указывается в файле , —
это поле . Таким образом вы указываете
Composer, от каких пакетов зависит ваш проект.

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

Как вы можете видеть, принимает объект,
который сопоставляет названия пакетов (например, ) с
указанием ограничений версии (например, ).

Composer использует эту информацию для поиска требуемого набора файлов (т.е.
зависимостей) в «репозиториях» указанных пакетов, которые вы регистрируете,
используя поле , либо ищет их в
репозитории пакетов по умолчанию Packagist. В приведенном выше примере,
поскольку в файле не зарегистрировано никакого другого
репозитория, предполагается, что пакет зарегистрирован в
Packagist. (Смотрите подробнее о Packagist ниже, либо узнайте больше о
репозиториях здесь).

Названия пакетов

Название пакета состоит из имени разработчика (vendor) и собственно имени
проекта. Зачастую они будут совпадать — имя разработчика нужно только для
предотвращения коллизий названий пакетов. К примеру, данная возможность позволит
двум разным людям создать библиотеку с названием : один определит пакет с
названием , в то время как другой может создать пакет, имя которого
.

Подробнее про публикацию и именования пакетов читайте здесь.
(Обратите внимание, что вы также можете указать «пакеты платформы» в качестве
зависимостей, что позволяет вам требовать определенные версии серверного
программного обеспечения. Смотрите далее
в этой главе.)

Ограничения версии пакета

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

Как установить Composer

Установка Composer может выполняться по-разному. Она также зависит от используемой среды и операционной системы. Рассмотрим различные варианты.

Установка Composer в Ubuntu, выполняющейся в подсистеме Windows для Linux (WSL)

Для установки Composer в Windows 10 на подсистему Windows для Linux (WSL) необходимо выполнить следующие команды:

Первая команда выполняет загрузку скрипта установщика с сайта «getcomposer.org». Вторая команда выполняет запуск этого установщика. В процессе своей работы установщик проверит некоторые настройки «php.ini», предупредит вас, если они установлены неправильно, а затем загрузит последний «composer.phar» в текущий каталог. Последняя или третья команда просто удалит загруженный установщик, который ранее использовался для установки Composer.

Phar — это исполняемые файлы (программы), которые выполняются посредством php интерпретатора.

Если при установке php пакетов у вас выводиться ошибки на отсутствие прав записи в каталог «~/.composer/cache», то в командной строке просто запустите данную команду:

Для установки Composer глобально, т.е. чтобы он был доступен с помощью команды необходимо дополнительно выполнить ещё следующую команду:

Эта команда переместит файл «composer.phar» из директории пользователя в директорию «/usr/local/bin» и уберёт у него расширение «phar».

Установка Composer на OpenServer (в Windows)

В OpenServer по умолчанию уже установлен Composer. Находится он в зависимости от выбранной версии PHP (устанавливается в настройках OpenServer) в директории «OSPanel\modules\PHP_*\».

Работа с Composer в OpenServer по умолчанию осуществляется в собственной консоли. Для того чтобы открыть эту консоль необходимо нажать на значок Open Server правой кнопкой мыши в области уведомлений и в открывшемся контекстном меню найти соответствующий пункт.

В консоли для проверки того, что Composer подключен, например, можно ввести команду:

Эта команда также отобразит версию Composer.

Если при выполнении этой команды отобразится сообщение, что версия Composer устарела, то её можно обновить. Осуществляется это посредством выполнения следующей команды:

outdated #

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

Цветовое кодирование таково:

  • green (=): зависимость находится в последней версии и обновлена.
  • yellow (~): у Dependency есть новая версия, которая включает в себя обратную совместимость с breaks в соответствии с semver, поэтому обновляйте, если можете, но это может быть связано с работой.
  • red (!): У Dependency есть новая версия, совместимая с semver, и вы должны ее обновить.

Опции

  • —all (-a): показать все пакеты, а не только устаревшие (псевдоним для ).
  • —direct (-D): ограничивает список пакетов вашими прямыми зависимостями.
  • —strict: возвращает ненулевой код завершения, если какой-либо пакет устарел.
  • —minor-only (-m): Показывает пакеты, которые имеют незначительные обновления, совместимые с SemVer.
  • —format (-f): позволяет выбрать между текстовым (по умолчанию) или выходным форматом json.

Использование Composer

Если вы хотите использовать сторонние библиотеки, то при создании проекта на PHP или в уже готовом проекте вам необходимо инициализировать Composer для данного проекта. Инициализация всего лишь предполагает создание файла composer.json в корне вашего проекта с нужными вам параметрами. Проще всего это сделать в автоматизированном режиме командой composer init находясь в корневой директории вашего проекта

composer init

Далее вы перейдёте в интерактивный режим генерации package.json, в котором система вам задаст несколько следующих вопросов:

Package name — название вашего проекта(пакета). Обычно пишется в формате <vendor>/<package>, где vendor — название организации или разработчика, а package — название проекта или библиотеки.

Description — описание приложения.

Author — автор проекта. Обычно предлагает по умолчанию ваши данные из Git. примерный формат Nikolay Sergeychuk <[email protected]>

Далее задаст еще несколько вопросов, которые тоже можно просто пропустить, и предоставит листинг готового package.json.

Для примера я создам директорию для проекта и первым делом инициализирую в нём Composer

Пример инициализации Composer

Теперь в проекте есть файл package.json, в который мы можем добавлять списо зависимостей.

Зависимости бывают двух типов: обычные и девелоперские.

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

Девелоперские зависимости — зависимости, которые нужны лишь на этапе написания кода и не нужны в продакшене. Например библиотеки для тестирования, на продакшене они совсем необязательны.

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

composer require somepackage/somepackage:someversion

Например нам необходимо в проекте сгенерировать файл для Excel, для этого нам нужно было бы разобраться как устроены такие файлы и написать код, который будет создавать такой файл — это всё очень долго. С Composer мы можем просто найти готовую билбиотеку, подключить её и использовать удобный API для создания таких файлов.

Давайте подключим такую библиотеку, для примера возмём PHPExcel. Найти библиотеки можно на сайте https://packagist.org/ 

composer require PHPOffice/PHPExcel

После чего Composer скачает данную библиотеку и пропишет зависимость в package.json

Установка пакета в Composer

Содержимое package.json изменилось, а в корне проекта появилась директория vendor с файлами установленной библиотеки. При переносе исходного кода, например при использовании системы контроля версий (Git etc.), совсем необязательно тянуть с собой директорию vendor. Достаточно переностить проект без нее, а затем выполнять composer install в корне проекта. Composer скачает и установит пакеты, прописанные в package.json

Если вы хотите обновить ваши пакеты до совместимых версий выше, то используйте команду composer update

2014: Рейтинг ITmozg.ru

Для составления рейтинга специалисты ITmozg.ru проанализировали более 30 тыс. вакансий в IT-сфере.

Рейтинг языков по версии ITmozg.ru возглавил PHP, который с большим отрывом опередил C и C++, находящиеся на 1 и 4 месте мирового рейтинга соответственно. Вакансии, в которых упоминается PHP, составляют почти 22% от общего числа вакансий разработчиков, опубликованных за рассматриваемый период. В зарубежном рейтинге PHP занял лишь 6 место.

Рейтинг востребованности языков программирования по состоянию на конец 2013 года

Среди других отличий, которые можно отметить – более высокий спрос на Delphi, Visual Basic и .NET и, наоборот, более низкую востребованность Objective-C, т.е. разработку под устройства компании Apple.

Любопытно, что если включить в рассмотрение такой специализированный язык, как встроенный язык программирования 1С, то именно он станет абсолютным и доминирующим победителем рейтинга более чем с 37%-ми от общего числа вакансий. Работа с именно этим предварительно компилируемым языком высокого уровня, позволяющим вносить изменения в программные решения на базе 1С и конфигурировать их под потребности конкретных предприятий, пользуется сейчас в России гораздо большим спросом, чем другие виды разработки.

Рейтинг языков программирования (с учетом 1C)

remove #

Команда remove удаляет пакеты из файла composer.json из текущего каталога.

php composer.phar remove vendor/package vendor/package2

После удаления требований измененные требования будут удалены.

Опции

  • —dev: Удалить пакеты из .
  • —no-progress: Удаляет отображение прогресса, которое может запутаться в некоторых терминалах или сценариях, которые не обрабатывают обратные символы.
  • —no-update: Отключает автоматическое обновление зависимостей.
  • —no-scripts: пропускает выполнение сценариев, определенных в .
  • —update-no-dev: запустить обновление зависимостей с параметром .
  • —update-with-dependencies: также обновлять зависимости удаленных пакетов.
  • —ignore-platform-reqs: игнорировать требования , , и и принудительно выполнить установку, даже если локальная машина их не выполняет. См. Также параметр конфигурации платформы.
  • —optimize-autoloader (-o): преобразовать автозагрузку PSR-0/4 в classmap, чтобы получить более быстрый автозагрузчик. Это рекомендуется, особенно для производства, но может занять немного времени для запуска, так что в настоящее время это не сделано по умолчанию.
  • —classmap-authoritative (-a): Автозагрузка классов только из класса. Неявно включает опцию .
  • -apcu-autoloader: использовать APCu для кэширования найденных / не найденных классов.

mariadb + phpmyadmin

https://hub.docker.com/_/mariadb/https://hub.docker.com/r/phpmyadmin/phpmyadmin/

Поговорим про базы данных.
Конфиг для подключения выглядит следующим образом:

Для mariadb и phpmyadmin мы указали директиву environment, которая содержит специфические для конкретного контейнера переменные (подробности можно посмотреть в репозиториях самих контейнеров).
В данном случае, это пароль для пользователя root.

Для phpmyadmin мы вручную указали директиву links:

Сделать это необходимо для того, чтобы phpmyadmin знал с какой базой соединятся.
Если бы контейнер mariadb назывался db, то указывать эту директорию было бы не нужно.

Для mariadb мы слинковали директорию с данными:

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

Python

Универсальный Python недавно занял 1-е место в рейтинге самых популярных языков программирования. Он широко используется в обработке данных, веб-разработке и кибербезопасности.

Несмотря на впечатляющие преимущества, у Python также есть существенный недостаток — скорость.

Python и Ruby из одного семейства. Они оба медленные из-за GIL и использования интерпретатора. Основное различие между этими двумя языками состоит в том, что первый ориентирован на обработку данных, а второй больше подходит для веб-разработки.

Однако Python поддерживается мощными библиотеками и функциями. И некоторые из них, такие как модуль Numpy и встроенная функция Filter (), реализованы на C ++, что приводит к значительному увеличению производительности. Вот почему в наши дни Python стремительно развивается, опережая другие языки программирования.

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

Основная причина серьезных проблем со скоростью и производительностью — плохие реализация и дизайн кода.

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

Начните с HTML и CSS

Часто их называют языками программирования, но это не верно. Это язык разметки и таблица стилей, с помощью которых верстается страница. Все сайты используют HTML и CSS. Прелесть технологий — в их простоте: их легко освоить на среднем уровне за 2-3 недели. Если вам интересно работать в интернете — попробуйте.

JavaScript

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

  • серверные и консольные приложения;
  • игры и сервисы для мобильных;
  • программы для десктопа.

Этот язык быстро развивается, востребован на фрилансе. Часто именно JS рекомендуют в ответ на вопрос, какой язык программирования выбрать для быстрого старта. Его легко освоить.

Начинающий разработчик на JavaScript может рассчитывать на 30 тысяч рублей в месяц. Средний — 45–90 тысяч и больше. C опытом от трех лет — на 135 тысяч и больше.

Особенности:

  • Неявная типизация. Когда разработчик пишет код, он использует переменные — строки, числа и прочее. В языках со строгой типизацией программисту приходится объявлять тип переменных — сообщать обработчику, что это, например, число или строка. В языках с неявной типизацией обработчик «понимает» это сам. С одной стороны, это плюс — код пишется быстрее. С другой стороны — минус, потому что новички часто ошибаются и создают операции для переменных с разными типами данных. Например, в коде порой встречается суммирование чисел и слов. Это довольно формальное объяснение, на самом деле всё сложнее. Подробнее вы поймете эти особенности после старта обучения.
  • Малонадёжность — JS не используют в сверхсложном ПО, разрабатывать банковские или промышленные продукты на нем не получится.

Стек:

  • редактор кода или IDE (среда разработки): Notepad++, Sublime Text, WebStorm;
  • отладчик: браузер, Firebug;
  • среда исполнения для серверного ПО: NodeJS + менеджер пакетов npm.

Разрабатывать удобно в редакторе кода — он подсвечивает синтаксис и подсказывает нужное написание. Отладка, или пошаговое исполнение программы, в JS происходит в DevTools браузера, дополнительное ПО необязательно.

Пример синтаксиса JavaScript — обработка формы входа

Не забывайте о библиотеках и фреймворках. Это компоненты, из которых собирается программа. Для упрощения понимания: представьте строительство дома. Вы не создаете с нуля каждый кирпич, не делаете сами молоток, а пользуетесь готовыми инструментами и материалами. В случае с программированием — делаете программу из компонентов библиотеки или фреймворка.

Не торопитесь вникнуть во все технологии сразу. Начинаете с нуля — используйте чистый язык и разбирайтесь в принципах программирования.

Дополнительно пригодится:

  • для десктопных программ: Electron и AppJS;
  • популярные фреймворки и библиотеки: jQuery, AngularJS, ReactJS, Ember;
  • JSON — популярный формат передачи структурированных данных;
  • MongoDB — документо-ориентированная база данных для JS-процедур.

show #

Чтобы вывести список всех доступных пакетов, вы можете использовать команду .

php composer.phar show

Чтобы отфильтровать список, вы можете передать маску пакета с помощью подстановочных знаков.

php composer.phar show monolog/*

monolog/monolog 1.19.0 Sends your logs to files, sockets, inboxes, databases and various web services

Если вы хотите увидеть детали определенного пакета, вы можете передать имя пакета.

php composer.phar show monolog/monolog

name : monolog/monolog
versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
type : library
names : monolog/monolog
source :  https://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist :  https://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
license : MIT

autoload
psr-0
Monolog : src/

requires
php >=5.3.0

Вы даже можете передать версию пакета, в которой будут указаны подробности этой конкретной версии.

php composer.phar show monolog/monolog 1.0.2

Опции

  • —all: Перечислить все пакеты, доступные во всех ваших репозиториях.
  • —installed (-i): Список установленных пакетов (это включено по умолчанию и устарело).
  • —platform (-p): Список только пакетов платформы (php и расширения).
  • —available (-a): Список только доступных пакетов.
  • —self (-s): Перечислить информацию о корневом пакете.
  • —name-only (-N): только имена пакетов.
  • —path (-P): Список путей пакетов.
  • —tree (-t): Перечислите ваши зависимости как дерево. Если вы передадите имя пакета, оно покажет дерево зависимостей для этого пакета.
  • —latest (-l): Список всех установленных пакетов, включая их последнюю версию.
  • —outdated (-o): Предполагается , но здесь перечислены только пакеты, которые имеют более новую версию.
  • —minor-only (-m): использовать с . Показывает только пакеты с незначительными обновлениями, совместимыми с SemVer.
  • —direct (-D): ограничивает список пакетов вашими прямыми зависимостями.
  • —strict: возвращает ненулевой код завершения, когда есть устаревшие пакеты.
  • —format (-f): позволяет выбрать между текстовым (по умолчанию) или выходным форматом json.

С чего начать изучение

PHP легко изучить самостоятельно за счет низкого порога входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня мало, чтобы создать работающий код. Сегодня на российском рынке труда из-за низкого порога входа PHP-кодеров много, и большинство — невысокого уровня.


PHP стабильно находится в топе популярных языков программирования, а в 2004 году получил звание «Язык года», несмотря на предсказания о его скорой смерти на всем пути развития.  Источник.

Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку, например, присвоить переменной не тот тип, — они «дадут по рукам». PHP же это пропустит, и программист сломает голову: что не так? Ведь все работает, но неправильно. Из-за этого на современном рынке хорошим программистам PHP готовы платить чек не ниже, чем другим разработчикам. Но хорошего специалиста сложно найти.

Чтобы учить язык, нужно задать себе вопрос: «Для чего он мне?» Учить ради процесса учебы — бесполезно, ведь без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.

global #

Глобальная команда позволяет запускать другие команды, такие как , или , как если бы вы запускали их из каталога .

Это просто помощник для управления проектом, хранящимся в центральном расположении, который может содержать инструменты CLI или плагины Composer, которые вы хотите иметь везде.

Это можно использовать для установки утилит CLI глобально. Вот пример:

php composer.phar global require fabpot/php-cs-fixer

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

php composer.phar global config bin-dir --absolute

Если вы захотите позже обновить двоичный код, вы можете просто запустить глобальное обновление:

php composer.phar global update

php + apache + nginx + mariadb + phpmyadmin

https://hub.docker.com/_/nginx/https://hub.docker.com/_/php/https://hub.docker.com/_/httpd/https://hub.docker.com/_/mariadb/https://hub.docker.com/r/phpmyadmin/phpmyadmin/

Ну, а теперь совмещаем наши конфиги, и получаем неплохое веб-окружение:

Для php мы добавили директиву build (), в которой указали директорию php, где хранится Dockerfile со следующим содержанием:

В данном файле мы обновляем репозитории и устанавливаем php модули ().
Также мы слинковали конфиг php, чтобы можно было его настроить нужным нам образом.
Содержимое php.ini можно взять, например, здесь.

Запускаем, проверяем, радуемся!
Если все сделано правильно, то index.php отработает без ошибок, а в директории project/mysql появятся служебные файлы базы.

php + apache + nginx

https://hub.docker.com/_/nginx/https://hub.docker.com/_/php/https://hub.docker.com/_/httpd/

Наверное, самая популярная связка для веб-проектов. Схематично это выглядит так:

Пара замечаний:

  • php используется как php-fpm, потому что быстрее и моднее;
  • apache используется, потому что популярен и htaccess.

Для того чтобы все настроить нам нужно будет также слинковать конфиг apache, и таким образом docker-compose будет выглядеть так:

Так как на просторах интернета я не нашел нормальный конфиг (оке, я просто не искал), а под рукой как раз docker, то решено было вытаскивать его из стандартного контейнера.
Уложилось все в 3 команды:

После выполнения данных команд, в текущей директории появится файл httpd.conf, который мы и будем использовать в качестве основы.
По сути, это простое копирование из запущенного контейнера.
Создаем файл /httpd/httpd.conf в рабочей директории, который после правок выглядит так:

Создаем файл /nginx/nginx.conf в рабочей директории со следующим содержимым:

В строке мы опять указываем не IP адрес, а название контейнера (вспоминаем про магию с hosts).

Для тестинга, нам нужно будет проверить, работает ли PHP и работает ли Apache.
Сформируем такую структуру проекта:

  • nginx
  • httpd
  • src
    • protected
      • .htaccess
      • index.html
    • index.php
  • docker-compose.yml

Содержимое .htaccess:

Содержимое index.php:

Содержимое index.html:

Если все настроено корректно, то картина должна быть следующей:

  • /index.php — откроется информация о php
  • /protected/index.html — откроется 403 ошибка apache
  • /protected/.htaccess — откроется 403 ошибка nginx (визуально они отличаются)
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: