PHP में YAML के साथ काम: Symfony Yaml लाइब्रेरी
YAML (YAML Ain't Markup Language) एक डेटा सीरियलाइज़ेशन फ़ॉर्मेट है जिसका उपयोग अक्सर कॉन्फ़िगरेशन फ़ाइलों, डेटा संरचनाओं के विवरण और सेवाओं के बीच सूचना आदान-प्रदान के लिए किया जाता है। PHP में YAML के साथ काम करने के लिए कई समाधान हैं, लेकिन सबसे लोकप्रिय और कार्यात्मक Symfony Yaml कंपोनेंट है। यह YAML डेटा को पार्स (पढ़ने) और डंप (लिखने) के लिए सुविधाजनक तरीके प्रदान करता है, YAML 1.2 के सभी स्पेसिफिकेशन को सपोर्ट करता है, और Laravel और Symfony सहित कई फ्रेमवर्क में बिल्ट-इन है।
इस लेख में हम Symfony Yaml लाइब्रेरी की स्थापना, बुनियादी संचालन और उन्नत सुविधाओं पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि YAML को PHP ऐरे में कैसे बदलें और इसके विपरीत, साथ ही जटिल संरचनाओं को कैसे संभालें।
लाइब्रेरी की स्थापना
Symfony Yaml Composer के माध्यम से स्थापित होता है। अपने प्रोजेक्ट की रूट डायरेक्टरी में यह कमांड चलाएं:
composer require symfony/yaml
स्थापना के बाद, Composer ऑटोलोडर को शामिल करें और आवश्यक क्लासेस को इम्पोर्ट करें:
require 'vendor/autoload.php';
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\Yaml\Exception\ParseException;
बुनियादी संचालन
YAML स्ट्रिंग को पार्स करना
Yaml::parse() मेथड YAML स्ट्रिंग को PHP ऐरे में बदलता है। एक सरल कॉन्फ़िगरेशन का उदाहरण देखें:
$yamlString = "
database:
host: localhost
port: 3306
name: mydb
user: admin
password: secret
";
try {
$data = Yaml::parse($yamlString);
print_r($data);
} catch (ParseException $e) {
echo 'YAML पार्सिंग में त्रुटि: ' . $e->getMessage();
}
परिणाम:
Array
(
[database] => Array
(
[host] => localhost
[port] => 3306
[name] => mydb
[user] => admin
[password] => secret
)
)
YAML फ़ाइल को पार्स करना
अक्सर YAML फ़ाइलों में संग्रहीत होता है। उन्हें पढ़ने के लिए file_get_contents() का उपयोग पार्सर के साथ करें:
$yamlFile = __DIR__ . '/config.yaml';
if (!file_exists($yamlFile)) {
die('कॉन्फ़िगरेशन फ़ाइल नहीं मिली');
}
try {
$config = Yaml::parse(file_get_contents($yamlFile));
echo 'डेटाबेस होस्ट: ' . $config['database']['host'];
} catch (ParseException $e) {
echo 'फ़ाइल पढ़ने में त्रुटि: ' . $e->getMessage();
}
YAML में डंप (लिखना)
Yaml::dump() मेथड PHP ऐरे को वापस YAML स्ट्रिंग में बदलता है। यह कॉन्फ़िगरेशन जनरेट करने या डेटा एक्सपोर्ट करने के लिए उपयोगी है:
$data = [
'app' => [
'name' => 'MyApp',
'version' => '1.0.0',
'debug' => true,
'modules' => ['auth', 'api', 'admin']
]
];
$yamlOutput = Yaml::dump($data, 3); // दूसरा पैरामीटर नेस्टिंग लेवल है
file_put_contents('app_config.yaml', $yamlOutput);
echo $yamlOutput;
फ़ाइल में परिणाम:
app:
name: MyApp
version: '1.0.0'
debug: true
modules:
- auth
- api
- admin
उन्नत सुविधाएँ
नेस्टेड संरचनाओं और विशेष प्रकारों को संभालना
Symfony Yaml किसी भी गहराई की नेस्टिंग के साथ-साथ दिनांक, null और बूलियन मान जैसे विशेष डेटा प्रकारों को सपोर्ट करता है:
$complexYaml = "
server:
host: 192.168.1.1
ports:
- 80
- 443
- 8080
settings:
timeout: 30
enabled: true
description: ~
created_at: 2024-01-15
";
$parsed = Yaml::parse($complexYaml);
var_dump($parsed['server']['settings']['enabled']); // bool(true)
var_dump($parsed['server']['settings']['description']); // NULL
var_dump($parsed['server']['settings']['created_at']); // string(10) "2024-01-15"
कस्टम पार्सिंग फ़्लैग्स
parse() मेथड दूसरा आर्गुमेंट लेता है - फ़्लैग्स की बिट मास्क। उदाहरण के लिए, Yaml::PARSE_KEYS_AS_STRINGS