Best Practices für die PHP-Hyperf-Microservices-Entwicklung: Vom Prototyp bis zur Produktion

WBOY
Freigeben: 2023-09-12 10:46:01
Original
850 Leute haben es durchsucht

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

PHP Hyperf ist ein leistungsstarkes Microservice-Framework, das häufig bei der Entwicklung großer Internetunternehmen eingesetzt wird. In diesem Artikel werden Best Practices für die Microservice-Entwicklung mit PHP Hyperf vorgestellt, vom Prototyp bis zur Produktionsumgebung.

1. Umgebungsvorbereitung

Bevor Sie PHP Hyperf für die Microservice-Entwicklung verwenden, müssen Sie die Umgebung vorbereiten. Stellen Sie zunächst sicher, dass die PHP-Betriebsumgebung installiert ist und die Version 7.2 oder höher ist. Zweitens installieren Sie Composer, um PHP-Abhängigkeitspakete zu verwalten. Installieren Sie abschließend das Befehlszeilentool hyperf/hyperf von Hyperf.

2. Erstellen Sie ein Projekt

Verwenden Sie das Befehlszeilentool von Hyperf, um ein neues Projekt zu erstellen:

$ composer create-project hyperf/hyperf-skeleton
Nach dem Login kopieren

Dieser Befehl erstellt ein Projekt mit dem Namen hyperf-skeleton im aktuellen Verzeichnis. Geben Sie das Projektverzeichnis ein:

$ cd hyperf-skeleton
Nach dem Login kopieren

3. Entwickeln Sie einen Prototyp

Bevor Sie mit der formalen Entwicklung beginnen, erstellen Sie einen Prototyp, um einige Grundfunktionen zu überprüfen. Sie können zunächst einen UserController erstellen und eine Registrierungsschnittstelle hinzufügen:

<?php

namespace AppController;

use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;

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

Dann registrieren Sie die Schnittstelle in der Routing-Konfigurationsdatei (routes.php):

use AppControllerUserController;

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

Starten Sie den Hyperf-Entwicklungsserver:

$ php bin/hyperf.php start
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie zum Senden Tools wie Postman eine POST-Anfrage an http://127.0.0.1:9501/user/register und Sie können sehen, dass die Schnittstelle normal funktioniert.

4. Datenbankbetrieb

Bei der echten Microservice-Entwicklung ist es oft notwendig, mit der Datenbank zu interagieren. Hyperf stellt die Hyperf/Database-Komponente zum Betrieb der Datenbank bereit. Installieren Sie zunächst die Hyperf/Datenbank-Komponente über Composer:

$ composer require hyperf/database
Nach dem Login kopieren

Dann konfigurieren Sie die Datenbankverbindungsinformationen in der .env-Datei:

DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=
Nach dem Login kopieren

Als nächstes konfigurieren Sie die Datenbankverbindungsinformationen in der Datei 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', ''),
    ],
];
Nach dem Login kopieren

Dann verwenden Sie Hyperf/Datenbank-Komponenten in UserController, um Datenbankoperationen durchzuführen:

<?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]);
    }
}
Nach dem Login kopieren

5. Sicherheitsmaßnahmen

Bei der Microservice-Entwicklung ist Sicherheit sehr wichtig. Hyperf bietet verschiedene Sicherheitsmaßnahmen zum Schutz von Anwendungen. Mit Hyperf/Security-Komponenten können sensible Daten ver- und entschlüsselt sowie Signaturen generiert und überprüft werden.

Installieren Sie die Hyperf/Security-Komponente:

$ composer require hyperf/security
Nach dem Login kopieren

Konfigurieren Sie die Hyperf/Security-Komponente in der Datei config/autoload/dependencies.php:

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

Verwenden Sie dann die Hyperf/Security-Komponente im UserController, um Daten zu ver- und entschlüsseln:

<?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]);
    }
}
Nach dem Login kopieren

Sechs, Bereitstellung der Produktionsumgebung

Wenn die Entwicklung abgeschlossen ist, kann das Projekt in der Produktionsumgebung bereitgestellt werden. Hyperf bietet einige praktische Befehle für die Bereitstellung, z. B. den folgenden Befehl zum Generieren eines Routencaches:

$ php bin/hyperf.php vendor:publish hyperf/snowflake
Nach dem Login kopieren

Die Konfiguration kann mit dem folgenden Befehl neu geladen werden:

$ php bin/hyperf.php vendor:publish hyperf/config
Nach dem Login kopieren

Abschließend verwenden Sie den folgenden Befehl, um den Produktionsumgebungsserver zu starten:

$ php bin/hyperf.php start
Nach dem Login kopieren
Nach dem Login kopieren

Das ist es. Eine Best Practice für die PHP-Hyperf-Microservice-Entwicklung vom Prototyp bis zur Produktion. Ich hoffe, dass dieser Artikel für Anfänger hilfreich sein und eine Rolle bei der Entwicklung von Microservices spielen kann.

Das obige ist der detaillierte Inhalt vonBest Practices für die PHP-Hyperf-Microservices-Entwicklung: Vom Prototyp bis zur Produktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage