>  기사  >  백엔드 개발  >  PHP Hyperf 마이크로서비스 개발 모범 사례: 프로토타입에서 프로덕션까지

PHP Hyperf 마이크로서비스 개발 모범 사례: 프로토타입에서 프로덕션까지

WBOY
WBOY원래의
2023-09-12 10:36:11794검색

PHP Hyperf微服务开发最佳实践:从原型到生产环境

PHP Hyperf는 대규모 인터넷 기업의 개발에 널리 사용되는 고성능 마이크로서비스 프레임워크입니다. 이 문서에서는 프로토타입부터 프로덕션 환경까지 PHP Hyperf를 사용한 마이크로서비스 개발의 모범 사례를 소개합니다.

1. 환경 준비

마이크로서비스 개발을 위해 PHP Hyperf를 사용하기 전에 환경을 준비해야 합니다. 먼저 PHP 운영 환경이 설치되어 있고 버전이 7.2 이상인지 확인하세요. 둘째, PHP 종속성 패키지를 관리하려면 Composer를 설치하세요. 마지막으로 Hyperf의 명령줄 도구인 hyperf/hyperf를 설치합니다.

2. 프로젝트 만들기

Hyperf의 명령줄 도구를 사용하여 새 프로젝트를 만듭니다.

$ composer create-project hyperf/hyperf-skeleton

이 명령은 현재 디렉터리에 hyperf-skeleton이라는 프로젝트를 만듭니다. 프로젝트 디렉토리 입력:

$ cd hyperf-skeleton

3. 프로토타입 개발

정식 개발을 시작하기 전에 프로토타입을 생성하여 몇 가지 기본 기능을 검증합니다. 먼저 UserController를 생성하고 등록 인터페이스를 추가할 수 있습니다:

<?php

namespace AppController;

use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;

/**
 * @Controller(prefix="/user")
 */
class UserController
{
    /**
     * @PostMapping("/register")
     */
    public function register()
    {
        // 注册逻辑
    }
}

그런 다음 라우팅 구성 파일(routes.php)에 인터페이스를 등록합니다:

use AppControllerUserController;

Router::addGroup('/user', function () {
    Router::post('/register', [UserController::class, 'register']);
});

Hyperf 개발 서버 시작:

$ php bin/hyperf.php start

Postman과 같은 도구를 사용하여 전송 http://127.0.0.1:9501/user/register에 대한 POST 요청을 실행하면 인터페이스가 정상적으로 작동하는 것을 확인할 수 있습니다.

4. 데이터베이스 운영

실제 마이크로서비스 개발에서는 데이터베이스와의 상호작용이 필요한 경우가 많습니다. Hyperf는 데이터베이스를 운영하기 위한 Hyperf/Database 구성 요소를 제공합니다. 먼저 Composer를 통해 Hyperf/Database 구성 요소를 설치합니다:

$ composer require hyperf/database

그런 다음 .env 파일에서 데이터베이스 연결 정보를 구성합니다:

DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

다음으로 config/autoload/databases.php 파일에서 데이터베이스 연결 정보를 구성합니다:

return [
    'default' => [
        'driver' => env('DB_DRIVER', 'mysql'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', 3306),
        'database' => env('DB_DATABASE', 'test'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
    ],
];

그런 다음 UserController의 Hyperf/Database 구성 요소를 사용하여 데이터베이스 작업을 수행합니다.

<?php

namespace AppController;

use HyperfDbConnectionDb;
use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;

/**
 * @Controller(prefix="/user")
 */
class UserController
{
    /**
     * @PostMapping("/register")
     */
    public function register()
    {
        $username = $this->request->input('username');
        $password = $this->request->input('password');

        // 插入用户数据
        $userId = Db::table('users')->insertGetId([
            'username' => $username,
            'password' => $password,
        ]);

        // 返回用户ID
        return $this->response->json(['user_id' => $userId]);
    }
}

5. 보안 조치

마이크로서비스 개발에서는 보안이 매우 중요합니다. Hyperf는 애플리케이션을 보호하기 위한 몇 가지 보안 조치를 제공합니다. Hyperf/보안 구성 요소는 중요한 데이터를 암호화 및 해독하고 서명을 생성 및 확인하는 데 사용할 수 있습니다.

Hyperf/Security 구성 요소 설치:

$ composer require hyperf/security

config/autoload/dependents.php 파일에서 Hyperf/Security 구성 요소 구성:

return [
    'dependencies' => [
        // ...
        HyperfSecurityEncrypterInterface::class => HyperfSecurityHashPasswordHash::class,
        HyperfSecuritySecurityManagerInterface::class => HyperfSecuritySecurityManager::class,
    ],
];

그런 다음 UserController의 Hyperf/Security 구성 요소를 사용하여 데이터를 암호화하고 해독합니다.

<?php

namespace AppController;

use HyperfDbConnectionDb;
use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;
use HyperfSecurityEncrypterInterface;
use HyperfSecuritySecurityManagerInterface;

/**
 * @Controller(prefix="/user")
 */
class UserController
{
    /**
     * @PostMapping("/register")
     */
    public function register(EncrypterInterface $encrypter, SecurityManagerInterface $security)
    {
        $username = $this->request->input('username');
        $password = $this->request->input('password');

        // 加密密码
        $hashedPassword = $security->passwordHash($password);

        // 插入用户数据
        $userId = Db::table('users')->insertGetId([
            'username' => $username,
            'password' => $hashedPassword,
        ]);

        // 使用加密算法生成令牌
        $token = $encrypter->encrypt([
            'user_id' => $userId,
            'username' => $username,
        ]);

        // 返回用户ID和令牌
        return $this->response->json(['user_id' => $userId, 'token' => $token]);
    }
}

Six, Production 환경 배포

개발이 완료되면 프로젝트를 프로덕션 환경에 배포할 수 있습니다. Hyperf는 경로 캐시를 생성하는 다음 명령과 같은 몇 가지 편리한 배포 명령을 제공합니다.

$ php bin/hyperf.php vendor:publish hyperf/snowflake

다음 명령을 통해 구성을 다시 로드할 수 있습니다.

$ php bin/hyperf.php vendor:publish hyperf/config

마지막으로 다음 명령을 사용하여 프로덕션 환경 서버를 시작합니다.

$ php bin/hyperf.php start

프로토타입부터 프로덕션까지 PHP Hyperf 마이크로서비스 개발을 위한 모범 사례입니다. 이 글이 초보자에게 도움이 되기를 바라며, 마이크로서비스 개발에 한몫을 할 수 있기를 바랍니다.

위 내용은 PHP Hyperf 마이크로서비스 개발 모범 사례: 프로토타입에서 프로덕션까지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.