Создали 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();