كيف تستخدم مترجم PHP عبر الإنترنت
- اكتب نصًا برمجيًا بلغة PHP أو الصقه في المحرر. وسم الفتح
<?phpاختياري؛ فإذا لم تحتوِ شيفرتك على أي وسم PHP فسيُضاف لك. وتعمل أيضًا القوالب التي تمزج HTML مع كتل<?php ... ?>. ويستعيد الزر إعادة ضبط المثال الشيفرة الابتدائية. - اضغط تشغيل أو استخدم Ctrl + Enter (⌘ + Enter على جهاز Mac).
- يظهر كل ما يخرجه نصك عبر
echoأوprintأوprintfأوvar_dumpفي لوحة المخرجات. وتُميَّز التحذيرات والأخطاء القاتلة. - اختر الحدّ الزمني: 5 أو 15 أو 60 ثانية. تُوقَف النصوص التي تعمل لمدة أطول تلقائيًا، ويُنهي الزر إيقاف التشغيل فورًا.
ينزّل التشغيل الأول مفسّر PHP، بحجم نحو 12 MB. يخزّنه متصفحك مؤقتًا، فتبدأ التشغيلات اللاحقة أسرع بكثير. استخدم نسخ أو main.php للاحتفاظ بنصك.
تعمل PHP محليًا داخل متصفحك، لذلك لا تُرسَل شيفرتك إلى خوادمنا ولا تُخزَّن عليها أبدًا. يتذكر المحرر آخر نص لك في التخزين المحلي لمتصفحك، ولا يحتفظ به في أي مكان آخر.
ما المدعوم
يستخدم المترجم PHP 8 عبر php-wasm، وهو مفسّر PHP المترجَم إلى WebAssembly. وهو ليس محاكاة؛ بل تنفّذ PHP نفسها شيفرتك.
- صياغة PHP 8: الخصائص المحددة الأنواع، والأنواع الاتحادية، وتعبيرات
match، والوسائط المسماة، والدوال السهمية (fn)، ومعامل nullsafe (?->)، والتعدادات (enums) حيثما يدعمها الإصدار المضمّن. - الدوال الأساسية للنصوص (
str_containsوsprintfوexplode) والمصفوفات (array_mapوusortوarray_filter) والرياضيات والتواريخ. - JSON مع
json_encodeوjson_decode. - التعابير النمطية مع دوال
preg_*. - الأصناف والواجهات والسمات (traits) والدوال المغلقة (closures) والمولّدات والاستثناءات.
القيود:
- لا امتدادات شبكة: لا تتوفر
curlولا المقابس (sockets) ولا طلبات HTTP. - لا خادم قاعدة بيانات: لا يوجد MySQL أو PostgreSQL للاتصال به. وللتدرّب على SQL استخدم مترجم SQL عبر الإنترنت.
- لا سياق خادم ويب: لا تحصل
$_GETو$_POSTوالجلسات وملفات تعريف الارتباط على بيانات طلب حقيقية، ويُعرض ناتج HTML نصًا لا مُصيَّرًا. - لا حزم Composer، ولا إدخال قياسي.
مرجع سريع لـ PHP
<?php
$prices = ['apple' => 1.20, 'bread' => 2.50, 'milk' => 0.99];
$expensive = array_filter($prices, fn($p) => $p > 1);
arsort($expensive);
foreach ($expensive as $item => $price) {
printf("%-6s %5.2f\n", $item, $price);
}
$label = match (true) {
count($prices) > 2 => 'big basket',
default => 'small basket',
};
echo $label, PHP_EOL;
echo json_encode($prices, JSON_PRETTY_PRINT), "\n";
| المهمة | الصياغة |
|---|---|
| متغير | $name = "Ada"; |
| الاستيفاء داخل النص | "Hello, {$name}!" |
| مصفوفة ترابطية | $a = ['key' => 'value']; |
| التكرار على المفاتيح والقيم | foreach ($a as $k => $v) { } |
| فحص قيمة | var_dump($x); أو print_r($x); |
| الدمج مع القيمة الفارغة (Null coalescing) | $v = $a['x'] ?? 'default'; |
نصائح
- أنهِ الأسطر بـ
"\n"أوPHP_EOL؛ فالأمرechoلا يضيف سطرًا جديدًا من تلقاء نفسه. - استخدم
print_r($array)لعرض مضغوط للمصفوفات المتداخلة، أوvar_dump()عندما تحتاج أيضًا إلى الأنواع والأطوال. - للحصول على JSON مقروء مرّر
JSON_PRETTY_PRINT، أو الصق المخرجات في منسّق JSON وأداة التحقق منه للتحقق منها. - يبدأ كل تشغيل مفسّرًا جديدًا، لذلك لا تُحفَظ المتغيرات والدوال من التشغيل السابق.
preg_match؟ ابنِه وصحّحه أولًا في أداة اختبار Regex، ثم الصقه بين المحدِّدات، مثل '/^\d+$/'.الأسئلة الشائعة
هل يجب أن أبدأ شيفرتي بـ <?php؟
لا. إذا لم يحتوِ النص على وسم <?php فسيُضاف تلقائيًا. ويمكنك أيضًا كتابة HTML مع كتل <?php ... ?> مضمّنة، تمامًا كما في ملف .php على خادم ويب.
هل يمكنني الاتصال بـ MySQL؟
لا. يعمل المفسّر في متصفحك دون وصول إلى الشبكة أو خادم قاعدة بيانات. وللتدرب على SQL يمنحك مترجم SQL قاعدة بيانات SQLite حقيقية في المتصفح.
لماذا لا تعمل curl أو file_get_contents() مع عنوان URL؟
لا تتضمن نسخة WebAssembly هذه امتدادات الشبكة، ولا تسمح المتصفحات باتصالات شبكة خام من بيئة معزولة كهذه.
هل هذا مثل تشغيل PHP على خادم؟
بالنسبة لميزات اللغة ودوال النصوص والمصفوفات وJSON، نعم: إنه محرك PHP الحقيقي. أما أي شيء يعتمد على خادم ويب أو امتدادات أو الشبكة فيتصرف بشكل مختلف.
آخر تحديث