PHP Composer и спецификация PSR

задняя часть PHP спецификация кода Composer

справочная информация

войти в мой блог

www.sourcedev.cc/

В связи с постоянным увеличением объема кода проекта и зависимостью от некоторых библиотек нам приходится внедрять управление пакетами для решения таких проблем, как трудности в управлении, чтении и модульности. Трехсторонняя библиотека отличная, и многие ее поддерживают, да и стыковка функций тоже удобна, нам не нужно тратить время на упаковку или сборку колес для этой часто используемой функции. Многие люди практиковали это в своих проектах, если есть проблема, то вопрос будет решен в ближайшее время, и функция будет продолжать улучшаться. Всегда подчеркивалось, что, стоя на плечах гигантов, мы пойдем дальше, может быть, код, который мы создали сами, трудносопоставим. Сосредоточьтесь на своих основных продуктах и ​​функциональном времени, научитесь учиться и использовать их, а также сократите собственные затраты на разработку. Некоторые люди могут подумать, что использование мной сторонней библиотеки может повлиять на производительность, а некоторые функции я вообще не могу использовать. В коде проекта много бесполезного кода, из-за чего файл загружается слишком медленно, На самом деле не волнуйся,opcachePHP-скрипты могут быть предварительно скомпилированы в разделяемую память для повышения производительности PHP.

php Composer psr-4 autoload

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

Автоматически загрузка

В поддержку проекта Composer нам нужно только ввести этот файл, а также следующий код PHP, вы можете получить поддерживаемую поддержку.

<?php

require_once __DIR __ . '/vendor/autoload.php';

composer.json

{
    "autoload": {
        "psr-4": {
            "Work\\": "src/"
        },
        "psr-0": {
            "Vendor_Namespace_": "src/"
        }
    }
}

Composer зарегистрирует автозагрузчик PSR-4 в пространстве имен Work, PSR-0 поддерживает_, который автоматически преобразуется в структуру каталогов

classmap

Библиотеки классов, не соответствующие спецификации PSR-0/4,

files

Явно указать файл для загрузки

дополнительный

Репозитории пакетов пользовательских библиотек ресурсов

type

  • Репозиторий типа Composer, простой веб-сервер
  • vcs git, svn, hg и т. д.
  • груша получает ресурсы от груши
  • пакет встроенный одинcomposer.jsonобъект

scripts

Composer позволяет перехватывать скрипты на разных этапах процесса установки.

Подробный процесс

Типичная команда, когда композитор установлен

  • post-install-cmd composer installЗапускается после выполнения
  • post-update-cmd composer updateЗапускается после выполнения

демонстрация пользовательского скрипта

{
    "scripts": {
        "post-update-cmd": "MyVendor\\MyClass::postUpdate",
        "post-package-install": [
            "MyVendor\\MyClass::postPackageInstall"
        ],
        "post-install-cmd": [
            "MyVendor\\MyClass::warmCache",
            "phpunit -c app/",
            "find vendor -type d -name .git -exec rm -rf '{}' \\;"
        ]
    }
}
<?php

namespace MyVendor;

use Composer\Script\Event;

class MyClass
{
    public static function postUpdate(Event $event)
    {
        $composer = $event->getComposer();
        // do stuff
    }

    public static function postPackageInstall(Event $event)
    {
        $installedPackage = $event->getOperation()->getPackage();
        // do stuff
    }

    public static function warmCache(Event $event)
    {
        // make cache toasty
    }
}

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

Мы также можем выполнить некоторые команды вручную

composer run-script [--dev] [--no-dev] script

расширять

Кстати, несколько других спецификаций кода

PSR

psr-0 автозагрузка

psr-1 Базовые спецификации кода

  • появляются только в файле<?phpи<?=Этикетка (обязательно)
  • просто используйтеutf-8php-код без заголовка BOM (обязательно)
  • Объявить новый спецификатор типа без побочных эффектов
  • Пространства имен следуютautoloadавтозагрузкаpsr-0/4Спецификация (обязательно)
  • регистр верблюжьего имени класса (обязательно)
  • Постоянное подчеркивание в классе_отдельный (обязательно)
  • метод верблюжьего футляра (обязательно)

psr-2 стиль кода

  • должен следовать psr-1
  • четыре пробела, а не табы
  • Ограничьте длину каждой строки до 80 или меньше
  • пространство имен и использование должны быть пустыми
  • Скобки класса должны быть на отдельной строке
  • методы класса, а также
  • Все свойства и методы должны быть до модификатора, статические после
  • После ключевого слова должен быть пробел
  • Кодовой контроль процесса,{В одной строке,}отдельная строка
  • {без пробела после,}без пробелов перед

psr-3 интерфейс журнала

  • уровень ошибкиRFC 5424(отладка, информация, уведомление, предупреждение, ошибка, критическое, оповещение, чрезвычайное происшествие)

psr-4 автозагрузка

Чище, чем спецификация psr-0 Подчеркивание в спецификации PSR-0_будут преобразованы в разделительные линии каталогов Подробности описаны выше и здесь повторяться не будут.

psr-6 интерфейс кеша

psr-7 http интерфейс сообщений

psr-11 интерфейс контейнера

psr-13 HyperMedia Link.

psr-15 http-ручка

psr-16 простой кеш

собрано или просмотрено