العمل مع YAML في PHP: المكتبات، التحليل وإنشاء الملفات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع YAML في PHP: المكتبات والأدوات



YAML (YAML Ain't Markup Language) هو تنسيق لتسلسل البيانات، سهل القراءة للبشر. يُستخدم غالبًا لملفات التكوين، تعريف مخططات البيانات، وتبادل المعلومات بين الخدمات. في PHP، توجد عدة طرق للعمل مع YAML: من الإضافات المدمجة (إن وجدت) إلى المكتبات الخارجية القوية. في هذه المقالة، سنشرح بالتفصيل الأدوات الرئيسية، طريقة تثبيتها، وأمثلة عملية.



لماذا نحتاج YAML في PHP؟

يستخدم مطورو PHP YAML بنشاط من أجل:

  • ملفات تكوين الأطر (Symfony، Laravel في بعض الحالات)؛
  • وصف ترحيلات قواعد البيانات؛
  • تخزين الترجمات والتوطين؛
  • تحديد هيكل بيانات الاختبار (الفيكستشرات)؛
  • إعداد CI/CD (GitLab CI، Ansible).

فهم كيفية تحليل (Parsing) وإنشاء YAML في PHP هو مهارة أساسية لمطور الواجهة الخلفية (Backend) الحديث.



1. الإضافة المدمجة yaml (PECL)

الطريقة الأكثر كفاءة هي استخدام الإضافة yaml، التي يتم تثبيتها عبر PECL. توفر هذه الإضافة دالتين رئيسيتين:

  • yaml_parse() — تحويل سلسلة YAML إلى مصفوفة PHP؛
  • yaml_emit() — تحويل مصفوفة PHP إلى سلسلة YAML.


التثبيت

pecl install yaml

بعد التثبيت، أضف السطر التالي إلى ملف php.ini:

extension=yaml.so


مثال على الاستخدام

<?php// تحليل سلسلة YAML$yamlString = "database:  host: localhost  port: 3306  name: test_db";

$config = yaml_parse($yamlString);echo $config['database']['host']; // localhost

// إنشاء YAML من مصفوفة$data = [ 'app' => [ 'name' => 'MyApp', 'version' => '2.0' ]];

$yamlOutput = yaml_emit($data);echo $yamlOutput;?>


2. مكتبة Symfony Yaml (الطريقة الموصى بها)

إذا لم تكن لديك إمكانية تثبيت إضافات PECL (على سبيل المثال، على استضافة مشتركة)، فإن الخيار الأفضل هو مكتبة Symfony Yaml. هي جزء من نظام Symfony البيئي، ولكنها تعمل بشكل ممتاز كمكون مستقل. المكتبة مكتوبة بالكامل بلغة PHP، ولا تتطلب تبعيات خارجية، وتدعم جميع إمكانيات YAML 1.1 و 1.2.



التثبيت عبر Composer

composer require symfony/yaml


الفئات الرئيسية

  • Symfony\\Component\\Yaml\\Yaml — واجهة ثابتة (Static Facade) مع دوال parse() و dump()؛
  • Symfony\\Component\\Yaml\\Parser — فئة للتحليل (Parsing) مع خيارات إضافية؛
  • Symfony\\Component\\Yaml\\Dumper — فئة لإنشاء YAML مع تحكم دقيق في التنسيق.


مثال على تحليل YAML

<?phprequire_once 'vendor/autoload.php';

use Symfony\\Component\\Yaml\\Yaml;

$yamlContent = "server: host: 0.0.0.0 port: 8080 ssl: true";

try { $array = Yaml::parse($yamlContent); print_r($array); // Array ( [server] => Array ( [host] => 0.0.0.0 [port] => 8080 [ssl] => 1 ) )} catch (\\Symfony\\Component\\Yaml\\Exception\\ParseException $e) { echo 'خطأ في تحليل YAML: ' . $e->getMessage();}?>


إنشاء YAML (تفريغ) من مصفوفة

<?php$config = [    'application' => [        'name' => 'PHP App',        'debug' => true,        'database' => [            'driver' => 'mysql',            'host' => 'localhost',            'user' => 'root'        ]    ]];

$yaml = Yaml::dump($config, 3, 2);// الوسيط الثاني — مستوى التداخل (inline)، الثالث — المسافات البادئةecho $yaml;?>


نتيجة التنفيذ:

application:  name: 'PHP App'  debug: true  database:    driver: mysql                    

توصيات