Создаем и тестируем composer пакеты локально

Создали composer пакет, но не знаете как проверить его работу? Далее я расскажу, как можно протестировать работу вашего composer package локально…

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

Тестирование созданного composer пакета

Сперва создадим новый composer.json файл для вашего пакета, важной частью которого является автозагрузка psr-4, которая устанавливает путь к пространству имен и, во-вторых, относительный исходный путь.

{
    "name": "name of the package",
    "description": "short description",
    "autoload": {
        "psr-4": {
            "Ziscod\\SomeApp\\": "/src"
        }
    },
    "minimum-stability": "dev"
}

В примере выше, происходит автозагрузка из src директории, которая для примера, имеет описанный класс Database в пространстве имен Ziscod\SomeApp соответствующий пути json файла.

<?php
namespace Ziscod\SomeApp;

use PDO;

class Database extends PDO
{

}

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

require('vendor/autoload.php');

use Ziscod\SomeApp\Database;

$db = new Database();

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

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

Далее, создайте еще один json файл (можете скопировать его). Добавьте в нем необходимое имя поставщика/имя пакета в ключ require . Чтобы все заработало, добавьте массив в repositories ключ и передайте локальный путь к вашему пакету. Это даст возможность composer загрузить пакет из локальной системы, а не из Packagist.

{
    "name": "dc/demo",
    "description": "",
    "require": {
        "ziscod/someapp": "@dev"
    },
      "autoload": {
        "psr-4": {
          "Ziscod\\SomeApp\\": "src/"
        }
    },
    "repositories": [
        {
          "type": "path",
          "url": "../pdo-wrapper-master"
        }
    ]
}

После всего запустите composer install.

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

require('vendor/autoload.php');

use Ziscod\SomeApp\Database;

$db = Database();

Подписаться на новые статьи