Рубрики
Uncategorized

Создайте свой собственный каркасный пакет

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

Каждый раз, когда пользователь сети создает новый проект, он должен реализовать его один раз composer create-project гиперреф /гиперреф-скелет . На самом деле, каждый раз, когда вы создаете подобный проект, эффективность будет очень низкой. Личные проекты на самом деле хороши, но для корпоративных проектов они не так дружелюбны. Например, некоторые компании создадут множество пакетов компонентов или большое количество кода, такого как общедоступная конфигурация. каждый раз создавайте Все проекты нуждаются в обновлении копия Во-вторых, эффективность очень низкая, и ее неудобно поддерживать.

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

Сделать каркасную упаковку

Мы используем гипервизор/гипервизор-скелет Чтобы создать каркасный пакет без установки каких-либо опций.

composer create-project hyperf/hyperf-skeleton parent

Для удобства демонстрации я использую Github Управление версиями.

Загрузите код в аквариум/родительский скелет

cd parent
git init
git remote add -m master origin [email protected]:Aquarmini/skeleton-parent.git
git add .
git commit -a -m "INIT"
git push origin master
git branch --set-upstream-to=origin/master master

Создать демонстрационный проект

Теперь давайте построим родительский Установим демонстрационный проект

mkdir demo
git init
git remote add -m master parent [email protected]:Aquarmini/skeleton-parent.git
git pull parent master
git branch parent
git branch --set-upstream-to=parent/master parent
git remote add -m master origin [email protected]:Aquarmini/skeleton-demo.git

git checkout master
git push origin master
git push origin master
git branch --set-upstream-to=origin/master master

Давайте взглянем на наш git Для настройки

$ cat .git/config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "parent"]
    url = [email protected]:Aquarmini/skeleton-parent.git
    fetch = +refs/heads/*:refs/remotes/parent/*
[branch "parent"]
    remote = parent
    merge = refs/heads/master
[remote "origin"]
    url = [email protected]:Aquarmini/skeleton-demo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Давайте изменим код по желанию и отправим его на демонстрационный склад.

Объединить родительский

Когда у нашего родителя есть какие-либо изменения, нам просто нужно объединить их.

Давайте добавим di Метод, легко получить Контейнер

измените composer.json , следующий код опущен

{
    "autoload": {
        "psr-4": {
            "App\": "app/"
        },
        "files": [
            "app/Kernel/Functions.php"
        ]
    }
}

Затем увеличьте app/Kernel/Functions.php файл

[email protected]
 * @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE
 */

use Hyperf\Utils\ApplicationContext;

if (! function_exists('di')) {
    /**
     * Finds an entry of the container by its identifier and returns it.
     * @param null|mixed $id
     * @return mixed|\Psr\Container\ContainerInterface
     */
    function di($id = null)
    {
        $container = ApplicationContext::getContainer();
        if ($id) {
            return $container->get($id);
        }

        return $container;
    }
}

Отправить код в родительский проект

Затем извлеките родительскую ветвь в демонстрационном проекте.

git checkout parent
git pull parent master
git checkout master
git merge parent
git push origin master

Написано в конце

Гиперфузия

Hyperf основан на Swool 4.4+ Реализации высокопроизводительной, гибкой платформы сотрудничества PHP, встроенного сервера сотрудничества и большого количества часто используемых компонентов, производительность основана на традиционной PHP-FPM Обеспечивая сверхвысокую производительность, наша платформа также поддерживает чрезвычайно гибкую масштабируемость. Стандартные компоненты реализованы на основе стандартов PSR и на основе строгой конструкции внедрения зависимостей, гарантирующей, что большинство компонентов или классов Заменяемы И Многоразовые .

В дополнение к общей совместной версии MySQL-клиентаRedis-клиента Он также предоставляет вам совместную версию Красноречивый ORM |/、 Сервер и клиент Websocket 、 |/Сервер и клиент JSON RPC 、 |/Сервер и клиент Grpc 、 |/Клиент Zipkin/Jaeger (opentracking) |/、 HTTP-клиент//、 |/Клиент Elasticsearch Клиент консула |/、 |/Клиент Etcd |/、 |/Компонент AMQP |/、 |/Центр конфигурации Apollo |/、 |/Управление конфигурацией приложений Alicloud ACM Центр конфигурации Etcd Ограничитель тока на основе токена алгоритм ведра Универсальный пул соединений Предохранитель Генерация документов Swagger Трекер Swool Движок Blade и Smarty view |/、 Генератор глобальных идентификаторов Snowflake И другие компоненты избавляют от необходимости внедрять соответствующую версию.

Hyperf также предоставляет Контейнер для инъекций зависимостей на основе psr-11аннотацииAOP, ориентированный на аспекты программированиеПромежуточное программное обеспечение на основе psr-15Пользовательский процесс | Менеджер событий на основе psr-14 Redis| очередь сообщений rabbitmq/| 、 Автоматическое кэширование модели 、 | Кэш на основе psr-16 Запланированная задача второго уровня Crontab | Интернационализация переводаВалидатор валидации И другие очень удобные функции, отвечающие богатым техническим и бизнес-сценариям, из коробки.