Рубрики
Uncategorized

Локальное развитие пакета Composer & Laravel

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

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

Болевое пятно развития

Я верю, что многие люди , которые не знают композитора, сделают это при разработке пакета:

Create project (jcc/new-package) - > write business logic - > push to code warehouse - > create debugging project - > composer require jcc/new-package-vvv - > debug - > Modify project - > push update code - > update package code in debugging project - > composer update-vvv - >...

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

В этой статье в основном рассматриваются следующие проблемы: Локальные пакеты разработки могут быть протестированы локально без отправки кода в стороннее хранилище кода, а затем composer require устанавливается в проект для тестирования:

Create project (jcc / New - package) - > write business logic - > create debugging project - > configure composer. JSON - > debug - > Modify project - > debug directly in debugging project - > debug directly in debugging project.

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

Принципы работы локальной разработки пакетов: Composer подключает локально разработанные пакеты из нового проекта (jcc/taxi) к проекту отладки (jcc/test-taxi/поставщик/jcc/texi) через мягкое соединение

В основном используется в репозиториях типа path, обновите информацию, пожалуйста, переместите документ

Пакет Composer для местного развития

Во-первых, давайте рассмотрим структуру установочного пакета Composer. При обычном использовании в качестве примера возьмите установку laravel/laravel. Откройте laravel в каталоге поставщиков, и вы увидите следующую структуру:

vendor/laravel
├── framework
│   └── src
│       └── Illuminate
│           └── ...
└── tinker
    └── src
        └── Console

Также посмотрите на пакеты зависимостей require или require-dev файла composer.json в проекте Laravel:

{
      ...,
    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    },
      ...
}

Из этого мы можем знать, что структура каталогов соответствует друг другу.

Создавайте каталоги и инициализируйте их

Конечно, при инициализации создания каталога следует отметить, что имя проекта соответствует структуре каталога. Например, если мой новый проект-jcc/taxi, то созданная мной структура каталогов должна быть такой:

jcc
└── taxi

Тогда нам нужно развиваться дальше в рамках taxi. Конечно, перед разработкой нам необходимо инициализировать конфигурацию composer и запустить ее в каталоге taxi.

composer init

Заполните информацию в соответствии с инструкциями.

Файл composer.json будет добавлен в каталог texi:

{
    "name": "jcc/taxi",
    "description": "This is a test.",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "jcc",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

Создайте каталог разработки и задайте необходимую информацию

Как правило, мы создаем два каталога: один-SRC для хранения всего логического кода пакета, а другой-тесты для хранения тестовых случаев:

jcc/taxi
├── src
├── tests
├── README.md
├── composer.json
└── LICENSE

Обратите внимание, что нам нужно снова настроить конфигурацию автоматической загрузки composer в файле composer.json и добавить ее в файл composer.json:

{
      ...,
    "autoload": {
        "psr-4": {
            "Jcc\Taxi\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Jcc\Taxi\Tests\": "tests/"
        }
    },
      ...
}

Подробнее о документах автоматической загрузки композитора

Создайте проект тестового пакета

Сначала создайте новый проект в каталоге JCC для тестирования:

jcc
├── taxi
└── test-taxi

Затем инициализируйте конфигурацию composer и сгенерируйте файл composer.json:

composer init

Затем добавьте проект Репозиториев двумя способами:

Во-первых: запускайте команды напрямую

composer config repositories.jcc path /Users/jiajianchan/Sites/jcc/taxi

Второе: добавьте непосредственно в файл composer.json:

{
      ...,
    "repositories": {
        "jcc": {
            "type": "path",
            "url": "/Users/jiajianchan/Sites/jcc/taxi"
        }
    }
}

Тип-путь, а URL-адрес-относительный путь проекта.

Далее, есть два способа добавления зависимостей: Оболочка:

composer require jcc/taxi:dev-master -vvv

Добавить в composer.json:

{
    ...,
    "require": {
     "jcc/taxi": "dev-master"
    },
    ...
}

Обратите внимание, конечно, что номер версии должен быть установлен в composer. JSON в атрибуте JCC/taxi project минимальная стабильность , в противном случае номер версии не будет найден при установке пакета.

Разработка и тестирование

Во-первых, создайте Client.php файл в SRC в рамках проекта jcc/такси:

a = $a;
        $this->b = $b;
    }

    public function addTogether()
    {
        return $this->a + $this->b;
    }
}

После установки проекта jcc/taxi в каталог jcc/test-taxi добавьте test.php файл:

// Introducing composer to automatically load files
require __DIR__ . '/vendor/autoload.php'

$client = new Jcc\Taxi\Client(5, 1);

echo $client->addTogether() . "\n";

Наконец, запустите test.php файл в каталоге jcc/test-taxi для получения добавленных результатов:

php test.php

Если вы будете осторожны, вы обнаружите, что в каталоге поставщиков jcc/test-taxi jcc/такси Зависимые проекты Мягкое подключение . То есть вы находитесь в JCC/такси Client.php Добавьте новый метод в файл и вызовите его в проекте JCC/test-taxi, не требуя пакета обновления composer. Очень удобно.

Локальное развитие пакета Laravel

Локальная разработка пакета Laravel в основном аналогична разработке пакета Composer. Давайте не будем напрягаться.

Сначала создайте новый проект Laravel:

composer create-project laravel/laravel laravel -vvv

Создайте следующие каталоги в проекте Laravel:

laravel
├── app
├── ...
└── packages
    └── jcc
        └── taxi
            ├── LICENSE
            ├── README.md
            ├── composer.json
            ├── src
            │   ├── Taxi.php
            │   └── TaxiServiceProvider.php
            └── tests

jcc/такси (поставщик/название) Для выпуска пакета нашего уровня, jcc Соответствующего ____________ имя пользователя github , такси Соответствует ____________ Название проекта

Сначала инициализируйте конфигурацию composer, которая ничем не отличается от обычной разработки пакетов, а затем в разделе JCC/taxi src создание каталогов TaxiServiceProvider.php Документ:

app->singleton('taxi', function () {
            return new Taxi;
        });
    }
}

Установить Taxi.php Документ:

Наконец, вы хотите, чтобы пакет был зарегистрирован в проекте laravel в config/app.php Добавить в:

return [
    ...,
    'providers' => [
        ...,
        Jcc\Taxi\TaxiServiceProvider::Class,
    ],
];

Модификация в рамках проекта laravel composer.json Документ:

{
    ...,
    "autoload": {
        ...,
        "psr-4": {
            ...,
            "Jcc\Taxi\": "packages/jcc/taxi/src/"
        }
    },
    ...
}

И выполните команду:

composer dump-autoload

Последний раз в web.php Для изменения:

Route::get('/', function () {
    app('taxi')->printRunning();
});

В этот момент, когда мы посетим домашнюю страницу проекта laravel, на ней будет отображаться запущено Поздравляем вас с успехом.

Разработать пакет несложно. Это нелегко сказать. Самое главное, что вам нужно постоянное творчество.