PHP Hyperf マイクロサービス開発のベスト プラクティス: プロトタイプから運用まで

WBOY
リリース: 2023-09-12 10:46:01
オリジナル
862 人が閲覧しました

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 などのツールを使用して、POST リクエストを http://127.0.0.1:9501/user/register に送信すると、インターフェイスが正常に動作していることがわかります。

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/Security コンポーネントは、機密データの暗号化と復号化、および署名の生成と検証に使用できます。

Hyperf/Security コンポーネントをインストールします:

$ composer require hyperf/security
ログイン後にコピー

config/autoload/dependency.php ファイルで Hyperf/Security コンポーネントを構成します:

return [
    'dependencies' => [
        // ...
        HyperfSecurityEncrypterInterface::class => HyperfSecurityHashPasswordHash::class,
        HyperfSecuritySecurityManagerInterface::class => HyperfSecuritySecurityManager::class,
    ],
];
ログイン後にコピー

次に、Hyperf/ を使用します。 UserController データの暗号化と復号化を行うセキュリティ コンポーネント:

<?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]);
    }
}
ログイン後にコピー

6. 運用環境のデプロイメント

開発が完了すると、プロジェクトを運用環境にデプロイできます。 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート