استخراج إخراج محدد من ملف PHP آخر باستخدام تحكم التدفق
عندما نقوم بتشغيل كود PHP من ملف آخر، يمكننا استخدام دالة include
لدمج محتوى الملف الآخر داخل الملف الحالي. في سياق ملف a.php الذي تقدمت به، يمكننا استخدام هذه الطريقة للوصول إلى النص المحتوى في ملف b.php.
للحصول فقط على جزء معين من محتوى b.php، يمكننا استخدام التحكم في التدفق باستخدام الدالة ob_start
و ob_get_contents
. فيما يلي الكود الذي يحقق هذا:
-
دليل Git: إنشاء وإدارة مستودعات البرمجة20/01/2024
-
إنشاء ملف GIF باستخدام Python11/03/2024
-
استيراد نمط تنسيق الشفرة في IntelliJ IDEA 1502/02/2024
في a.php:
php
echo "one";
// بداية التقاط الإخراج الناتج عن تشغيل b.php
ob_start();
include 'b.php';
$output = ob_get_contents();
ob_end_clean();
// نهاية التقاط الإخراج
echo "three";
// الآن يمكننا استخدام النص المستخرج من b.php بحرية
echo "Content from b.php: " . $output;
هذا الكود يبدأ بتشغيل a.php ويطبع “one”، ثم يبدأ في التقاط الإخراج الناتج عن تشغيل b.php داخل متغير $output
. بعد ذلك، يستطيع المستخدم استخدام المتغير $output
كما يشاء.
يرجى مراعاة أن هذا النهج يفترض أن الملف b.php يقوم بالإخراج (echo) مباشرة، ولا يقوم بإرجاع قيمة.
المزيد من المعلومات
في سياق لغة PHP، يُستخدم التحكم في التدفق (output buffering) لتخزين محتوى الإخراج في ذاكرة مؤقتة قبل أن يتم إرساله إلى المتصفح أو أي مكان آخر. يتم ذلك باستخدام الدوال ob_start()
و ob_get_contents()
و ob_end_clean()
كما هو موضح في الكود السابق.
تقوم ob_start()
ببدء التقاط الإخراج، بينما ob_get_contents()
تسترجع المحتوى الذي تم التقاطه حتى تلك اللحظة. أخيرًا، ob_end_clean()
تنهي التقاط الإخراج وتحذف المحتوى المخزن في الذاكرة المؤقتة.
بمجرد تشغيل الكود المقدم، سيتم طباعة “one” من a.php، ثم سيتم تشغيل ملف b.php باستخدام include
، وناتجه (المحتوى الذي يتم طباعته في b.php) سيتم تخزينه في المتغير $output
. بعد ذلك، سيتم طباعة “three” من a.php، تاركين المستخدم حر في استخدام $output
كما يشاء.
الكود المقدم يمثل طريقة للتعامل مع إخراج ملف b.php في سياق ملف a.php والتحكم في المحتوى الذي يتم الحصول عليه من هذا الإخراج.