Dans le système de gestion de fond, la compréhension des informations de version du client est très utile dans de nombreux scénarios. Par exemple:
Déterminez si le client est la dernière version et s'il nécessite une mise à niveau forcée;
Enregistrer les journaux d'accès pour le dépannage;
Renvoyez différentes structures de données en fonction des différences de version pour assurer la compatibilité.
Cet article présentera comment appliquer une fonction appelée get_client_version dans le système de gestion des antécédents PHP pour identifier et obtenir des informations de version client.
Les informations sur la version client sont généralement activement adoptées par le frontal (telles que l'application ou le client Web) via des en-têtes ou paramètres HTTP lorsqu'ils sont demandés, par exemple:
User-Agent: MyApp/2.3.1 (iOS)
Ou personnalisez l'en-tête:
X-Client-Version: 2.3.1
Nous pouvons extraire le numéro de version de ces informations et porter des jugements commerciaux en fonction de celle-ci.
Nous définissons d'abord une fonction Get_Client_version commune, qui donnera la priorité à l'obtention d'informations de version à partir de l'en-tête X-Client-Version . Si vous n'êtes pas défini, essayez d'analyser l'agent utilisateur .
/**
* Obtenez le numéro de version client
*
* @return string|null
*/
function get_client_version(): ?string {
// Priorité à la personnalisation Header
$headers = getallheaders();
if (isset($headers['X-Client-Version'])) {
return trim($headers['X-Client-Version']);
}
// Essayer de User-Agent Analyse
if (isset($_SERVER['HTTP_USER_AGENT'])) {
if (preg_match('/MyApp\/([\d\.]+)/', $_SERVER['HTTP_USER_AGENT'], $matches)) {
return $matches[1];
}
}
return null;
}
Astuce: vous pouvez ajuster les expressions régulières en fonction de la mise en œuvre spécifique de la fin frontale.
Supposons que nous développons une interface API / API / tableau de bord , et nous devons juger la version client pour déterminer le format de données renvoyé:
// dashboard.php
require_once 'utils.php'; // Hypothèses get_client_version Écrire dans ce fichier
$version = get_client_version();
if ($version === null) {
http_response_code(400);
echo json_encode(['error' => 'Impossible de reconnaître la version client']);
exit;
}
// Version du jugement
if (version_compare($version, '2.0.0', '<')) {
// Retour à l'ancienne version de la structure de données
$response = [
'message' => 'Veuillez mettre à niveau le client pour obtenir une fonctionnalité complète',
'data' => [],
'upgrade_url' => 'https://gitbox.net/app/update'
];
} else {
// Retour à la nouvelle version de la structure de données
$response = [
'message' => 'Bienvenue dans la dernière version',
'data' => [
'stats' => [/* Statistiques */],
'notifications' => [/* Informations sur la notification */],
]
];
}
header('Content-Type: application/json');
echo json_encode($response);
L'intexte frontal doit apporter des informations de version à chaque fois qu'elle demande, comme l'ajout d'une en-tête à l'intercepteur de demande Axios:
axios.defaults.headers.common['X-Client-Version'] = '2.3.1';
Ou ajoutez le numéro de version lors de la construction de la chaîne d'agent utilisateur:
navigator.userAgent = 'MyApp/2.3.1 (Android)';
Grâce à la fonction get_client_version , nous pouvons facilement obtenir les informations de version du client dans le système d'arrière-plan PHP, réalisant ainsi le contrôle de la version, la diversion des fonctions et d'autres opérations. Combiné avec la livraison unifiée et standardisée des informations de version à l'avant, ce mécanisme peut considérablement améliorer la robustesse et la maintenabilité du système.
Dois-je fournir un exemple de test unitaire de cette fonction?