En développement, en particulier lors du traitement de certaines données de configuration, nous devons souvent stocker des tableaux ou des objets complexes dans des fichiers. PHP fournit des fonctions de sérialisation et de non-série pour nous aider à convertir les données en chaînes de stockage et à les restaurer dans la structure de données d'origine si nécessaire. Cet article montrera comment utiliser ces deux fonctions pour stocker et lire des données sérialisées dans un fichier de configuration.
La fonction sérialisée de PHP est utilisée pour convertir les variables PHP (telles que les tableaux ou les objets) en une chaîne qui peut être stockée ou transférée. Cette chaîne peut être enregistrée dans une base de données, un fichier ou envoyé à un serveur distant. Lorsque vous devez restaurer les données d'origine, la fonction non sérialisée peut reconvertir cette chaîne en données d'origine.
$serializedData = serialize($data);
Supposons que nous ayons un tableau multidimensionnel contenant des informations de configuration. Nous pouvons convertir ces informations de configuration en chaînes via Serialize et les stocker dans un fichier de configuration. Voici l'exemple de code:
<?php
// Informations sur la configuration
$config = [
'site_name' => 'My Website',
'url' => 'http://gitbox.net',
'features' => [
'blog' => true,
'shop' => false,
'forum' => true
],
'maintenance' => false
];
// VolontéInformations sur la configuration序列化并Stocker dans le dossier
$serializedConfig = serialize($config);
file_put_contents('config.dat', $serializedConfig);
echo "Les données de configuration sont stockées!";
?>
Dans cet exemple, nous sérialisons un tableau contenant le nom du site Web, l'URL et les paramètres des fonctionnalités et l'enregistrons dans un fichier nommé config.dat via file_put_contents .
Lorsque nous devons lire les données de configuration, nous pouvons utiliser la fonction File_get_Contents pour obtenir la chaîne sérialisée à partir du fichier et la reconvertir au tableau ou à l'objet d'origine via Unserialize .
<?php
// Lire les données de configuration sérialisées à partir d'un fichier
$serializedConfig = file_get_contents('config.dat');
// Désérialiser les données
$config = unserialize($serializedConfig);
// Sortie des données de configuration restaurées
echo 'Nom de site Web: ' . $config['site_name'] . "\n";
echo 'Site web: ' . $config['url'] . "\n";
echo 'La fonction du blog est-elle activée?: ' . ($config['features']['blog'] ? 'Oui' : 'Non') . "\n";
echo 'Mode de maintenance: ' . ($config['maintenance'] ? 'Oui' : 'Non') . "\n";
?>
Dans cet exemple, nous lisons la chaîne sérialisée dans le fichier config.dat via file_get_contents et le reponsultant en un tableau en utilisant un non-série . Les données de configuration sont ensuite accessibles comme un tableau normal.
Sécurité: Soyez particulièrement prudent lors de l'utilisation de non-série , car les données de sérialisation malveillantes peuvent entraîner des problèmes de sécurité. Il est recommandé d'utiliser des alternatives sécurisées pour sérialiser et se désérialiser lors du traitement des données à partir de sources non fiables, ou pour vérifier les données d'entrée si nécessaire.
Lisibilité de la sérialisation: Bien que le sérialisation puisse stocker des structures de données complexes sous forme de chaînes, les données sérialisées elle-même ne sont pas lisibles. Si vous avez besoin d'un format plus lisible, envisagez d'utiliser json_encode et json_decode .
Supposons que vos informations de configuration contiennent une URL et que vous souhaitez remplacer le nom de domaine de l'URL par gitbox.net . Cela peut être réalisé via STR_REPLACE . Voici un exemple de code modifié:
<?php
// Informations sur la configuration
$config = [
'site_name' => 'My Website',
'url' => 'http://example.com',
'features' => [
'blog' => true,
'shop' => false,
'forum' => true
],
'maintenance' => false
];
// Sérialiser les données de configuration
$serializedConfig = serialize($config);
// Volonté URL Remplacer le nom de domaine par gitbox.net
$serializedConfig = str_replace('example.com', 'gitbox.net', $serializedConfig);
// Stocker dans le dossier
file_put_contents('config.dat', $serializedConfig);
echo "Les données de configuration sont stockées,Et mis à jour URL!";
?>
De la manière ci-dessus, nous utilisons STR_REPLACE pour remplacer l'exemple.com dans l'URL par gitbox.net avant de sérialiser et d'enregistrer les données dans un fichier.
L'utilisation de sérialisation et de non-série rend très pratique de stocker des structures de données complexes dans des fichiers et de les restaurer en cas de besoin. Grâce à la sérialisation, nous pouvons facilement stocker les données de configuration en tant que chaînes, qui sont faciles à gérer dans les fichiers ou les bases de données. Dans le même temps, en utilisant des opérations de chaîne telles que STR_REPLACE , les données peuvent être modifiées et nettoyées pour s'assurer qu'elle répond aux besoins.