Рубрики
Uncategorized

Компоненты PHP, Управление зависимостями и автоматическая загрузка

Автор оригинала: David Wong.

собрание

Упаковщик каталога компонентов PHP

Упаковщик каталога компонентов PHP

Упаковщик каталога компонентов PHP

Packagist-это место, где можно найти компоненты PHP, а Composer-инструмент для установки компонентов PHP.

https://get композитор .орг

Установка:

curl -sS https://getcomposer.org/installer | php

Используйте curl для загрузки установочного сценария Composer, используйте PHP для выполнения установочного сценария и, наконец, создайте композитора. файл phar в текущем каталоге

Полезная команда:

sudo mv composer.phar/usr/локальный/bin/композитор

Программирование исполняемых двоичных файлов композитора:

sudo chmod +x/usr/локальный/bin/композитор

оставайся ~/.bash_profile Добавьте следующую строку кода:

PATH=/usr/local/bin:$PATH

оставайся ~/.bash_profile Добавьте следующую строку кода:

Компоненты установки

Введите каталог верхнего уровня проекта и выполните один раз для каждого компонента PHP:

composer require vendor/package

Эта команда устанавливает последнюю стабильную версию компонента.

执行命令的接接在在中中新新新 composer.json Просмотр в файле. После выполнения этой команды вы также создадите один composer.замок Документы.

执行命令的接接在在中中新新新 || composer.json || Просмотр в файле. После выполнения этой команды вы также создадите один || composer.замок || Документы.

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

Почему? Если у вас есть композитор. заблокировав файл, Composer загружает конкретную версию, указанную в файле, независимо от последней версии, доступной в Packagist. Так что мы должны композитор.блокировка Документы включены в систему управления версиями, что позволяет использовать одну и ту же версию компонентов PHP.

композитор.блокировка Есть недостаток. Команда composer install не устанавливает новую версию, которая позволяет избежать номера версии, указанного в ней. Если вам нужно загрузить новую версию компонента, вам необходимо использовать

composer update

Автоматическая загрузка PHP-компонентов

Нам просто нужно импортировать автоматический загрузчик, созданный Composer, с помощью функции require в верхней части scan.php файл:

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

Например: напишите scan.php

Сканировать. PHP – скрипт написан с помощью компонентов Guzzle и CSV.

options($csvRow[0]);
        
        if ($httpResponse->getStatusCode >= 400) {
            throw new \Exception();
        }
    } catch (\Exception $e) {
        echo $csvRow[0] . PHP_EOL;
    }
}

При создании экземпляров компонентов вы используете пространства имен \GuzzleHttp & \League\Csv .

Реализация:

php scan.php url-адреса.csv

Написание сценариев командной строки с использованием PHP

  • Написание сценариев командной строки с использованием PHP

  • Написание сценариев командной строки с использованием PHP

  • Написание сценариев командной строки с использованием PHP

Композитор и частные библиотеки

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

реализуйте установку composer или обновление composer Когда вам потребуется аутентификация, Composer напомнит вам об этом.

Composer还会询问你是否把仓库的认证保存在本地的 авт.в JSON В документе.

auth.json:

{
    "http-basic": {
        "example.org": {
            "username": "",
            "password": ""
        }
    }
}

Если вы не хотите ждать, пока Composer запросит у вас учетные данные для аутентификации, используйте следующую команду:

composer config http-basic.example.org your-username your-password

Объясните это: http-basic сообщает Composer, что нам необходимо пройти аутентификацию для указанного доменного имени, example.org это имя хоста. Эта команда сохраняет учетные данные в процессе аутентификации. Файл JSON в текущем проекте.

Создание компонентов

Организация файловых систем

src/
tests/
composer.json
README.md
CONTRIBUTING.md
LICENSE
CHANGELOG.md

Демо: https://github.com/thephpleague/skeleton

Демо: https://github.com/thephpleague/skeleton

Например:

{
    "name": "vendor/package",
    "description": "",
    "keywords": ["", ""],
    "homepage": "http://example.org",
    "license": "MIT",
    "authors": [
        {
            "name": "",
            "homepage": "",
            "role": "Developer"
        }
    ],
    "support": {
        "email": ""
    },
    "require": {
        "php": ">=5.4.0",
        "vendorX/packageX": "~5.0"
    },
    "require-dev": {
        "vendorY/packageY": "~4.3"
    },
    "suggest": {
        "league/csv": "~6.0"
    },
    "autoload": {
        "psr-4": {
            "namespace\subnamespace\": "src/"
        }
    }
}

Среди них:

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

автозапуск В PSR-4 нам нужно сопоставить префикс пространства имен компонента с путем файловой системы относительно корневого каталога компонента.

Если создан экземпляр фиктивного пространство имен\подпространство имен\Util\Сканер Класс, Composer загружается автоматически src/Url/Scanner.php Документы.

Демо: http://getcomposer.org

ПРОЧИТАЙ МЕНЯ

  • Наименование и описание компонентов

  • Инструкции по установке

  • Инструкция по применению

  • Описание теста

  • Описание режимов внесения взносов

  • Вспомогательные ресурсы

  • Информация об авторе

  • лицензия на программное обеспечение

Компоненты реализации

Демонстрация

urls = $urls;
        $this->httpClient = new \GuzzleHttp\Client();
    }
    
    public function getInvalidUrls()
    {
        $invalidUrls = [];
        foreach ($this->urls as $url) {
            try {
                $statusCode = $this->getStatusCodeForUrl($url);
            } catch (\Exception $e) {
                $statusCode = 500;
            }
            
            if ($statusCode >= 400) {
                array_push($invalidUrls, [
                    'url' => $url,
                    'status' => $statusCode
                ]);
            }
        }
        
        return $invalidUrls;
    }
    
    protected function getStatusCodeForUrl($url)
    {
        $httpResponse = $this->httpClient->options($url);
        
        return $httpResponse->getStatusCode();
    }
}

Подчинение

  1. Отправьте код на свой GitHub

  2. Отправить компоненты в https://packagist.org/packages/submit

  3. Вы можете установить крючок для уведомления упаковщика: https://packagist.org/profile каждый раз, когда вы обновляете репозиторий компонента/

  4. Использование: композитору требуется поставщик/пакет

getInvalidUrls());

Справочные ресурсы

  1. Современный PHP