قد يكون هذا الموضوع ليس له ارتباط وثيق ببرمجة مواقع الإنترنت إلا أنه هام لكل محبي لغة PHP، وهو أحد العوامل الرئيسية لدعم لغة
ملاحظة: لسبب ما لا يظهر الموضوع بشكل سليم في منتدى سوالف بسبب خلل في عرض الكود (أتمنى أن يصلحه مشرفوا المنتدى) لذلك يمكن قراءة نفس الموضوع بشكل أوضح هنا:
http://www.php4web.com/phpbb/viewtopic.php?p=1457
PHP أمام منافسيها، فلغة PHP كما عرفناها لغة برمجة المواقع هي الآن أيضاً لغة برمجة تطبيقات مستقلة، حيث أن مجموعة PHP كانت تطور
مشروعين مختلفين عن مفسر PHP للعمل تحت الويب هما مفسر PHP للتحكم عن طريق الموجه CLI و مكتبات PHP/GTK لإنشاء تطبيقات ذات واجهة
رسومية GUI، حيث وصل الأول إلى المراحل النهائية وذلك في الإصدار الجديد PHP 4.3.0 حيث أصبح بالإمكان الحصول على المفسر مستقلاً مع
الحزمة التوزيعية، ووصل الثاني إلى مرحلة لا بأس بها.
ونزولاً عند رغبة بعض الإخوة في المنتدى، ورغبة مني في توضيح هذه الميزات في لغة PHP المفضلة سأشرح فيما يلي بعض الأمثلة حول إمكانية
استخدام تلك الميزات فيما قد يفيد مبرمجي الويب ومستخدميه،
مع التنبيه بأن هذا الشرح لا يغني عن التعليمات الأساسية الموجودة في موقع PHP.net بحسب الارتباطات المذكورة.
واجهة التحكم عن طريق الموجه CLI
المرجع http://www.php.net/manual/en/features.commandline.php
ذكرت في موضوع سابق أن واجهة CLI تسمح بتنفيذ بريمج PHP كبرنامج تطبيقي بحيث تكون مدخلاته هي المؤشرات الموضوعة في سطر الاستدعاء،
ويتم توجيه المخرجات إلى وحدة الإخراج القياسية (افتراضاً الشاشة)، وتصبح بذلك PHP مثلها مثل اللغات الأخرى perl و tcl..الخ وحتى أن
بالإمكان استخدامها برامجها بدلاً من البرامج الدفعية .bat في Windows، واستخدامها في عمل برامج موجهة لمنصات unix shell ويعني ذلك
أيضاً إمكانية عمل برامج تنفيذية مستقلة (ليس لها علاقة بالويب)، ولكي أوضح معنى ذلك سوف أشرح بعض الأمثلة التي تعمل على نظام
Windows وبشكل مستقل عن الويب ومزود الويب.
(لتجربة الأمثلة يرجى استخدام الإصدار الأخير من PHP) مع ملاحظة أنه لا يمكن استخدام اللغة العربية نظراً لأن موجه DOS لا يدعم اللغة
العربية
- المثال الأول: برنامج قائمة اختيارات
http://www.php4arab.info/scripts/les...mple1.php.html
كود PHP:
<?php
// Simple CLI Example by [email]VisualMind@php.net[/email]
echo "
1- Notepad
2- Calculator
3- Wordpad
4- Exit
Choose option:";
$choice=0;
while($choice!=4) {
$choice = (integer) fgets(STDIN, 2);
switch($choice) {
case 1:
exec('Notepad.exe');
break;
case 2:
exec('Calc.exe');
break;
case 3:
exec('Wordpad.exe');
break;
}
}
echo "Good Bye";
?>
لنفترض أن برنامج PHP موجود في المجلد C:\apache\php
سجل المثال في ملف باسم example1.php في نفس المجلد C:\apache\php
بعد ذلك افتح نافذة موجه DOS واكتب كما في الصورة:
سيقوم البرنامج بالتنفيذ وسيظهر كما في الصورة التالية:
وينتظر البرنامج حتى نقوم بإدخال رقم معين ثم نقوم بضغط على Enter ليبدأ بتنفيذ العملية، وسنلاحظ أنه سيقوم بتغشيل المفكرة عند
الضغط على الرقم 1
تحليل البرنامج
البرنامج بدائي جداً وهو قريب من تلك الأمثلة التي يأخذها متدربوا لغة C في بداية دراستهم، والمقصود بالمثال هنا هو توضيح كيفية
طريقة عمل برامج على CLI، ونلاحظ أن البرنامج يقوم بكتابة عبارات بواسطة أمر echo (القائمة) ثم انتظار الاختيار وذلك عبر قراءة من
وحدة الإدخال STDIN (المعرفة مسبقاً مع CLI) ثم وبعد ذلك يقوم بتنفيذ أحد البرامج بحسب الاختيار، ويستمر في حلقة الانتظار للاختيار حتى
يتم اختيار الرقم 4 للخروج وإنهاء البرنامج.
- المثال الثاني: برنامج فك وتشفير الملفات النصية والرسائل
http://www.php4arab.info/scripts/les...mple2.php.html
كود PHP:
<?php
// TextFiles En/Decoder for CLI by [email]VisualMind@php.net[/email]
echo "TextFiles En/Decoder for CLI by [email]VisualMind@php.net[/email]\n";
echo "Usage: example2.php inputfile[.txt] [outputfile[.txt]]\n";
if ($argv[1]) {
$inputFile = $argv[1];
} else {
echo "[path to] Input File:";
$inputFile = trim(fgets(STDIN, 255));
if (!$inputFile) exit('No file');
}
if ($argv[2]) {
$outputResource = fopen($argv[2], 'w');
} else {
$outputResource = STDOUT;
}
$text = implode('', file($inputFile));
if (substr($text,0,9)=='VMENCODED') {
echo "\n Decoding...\n";
$text = base64_decode(substr($text,9));
fputs($outputResource, $text);
echo "\n Decoding Complete.\n";
} else {
echo "\n Encoding...\n";
$text = 'VMENCODED'.base64_encode($text);
fputs($outputResource, $text);
echo "\n Encoding Complete.";
}
?>
تحليل البرنامج
البرنامج يقوم بعمل مكان أداة لتشفير الملفات النصية باستخدام تشفير base64 البسيط، ويمكن استخدامها عبر موجه DOS بسهولة، حيث
يقوم بقراءة ملف يتم تحديده عن طريق سطر التنفيذ، والكتابة على ملف آخر كما في الصورة التالية:
ويتعرف البرنامج تلقائياً على الملف إذا كان نصاً يقوم بتشفيره، وإن كان مشفراً يقوم بفكه.
خلاصة
يمكن استخدام مفسر PHP ليقوم بتنفيذ بريمج باستخدام نظام التشغيل في Windows مثلاً باستخدام البرنامج التنفيذي php.exe و في أنظمة
nix* بإضافة الواصفة التي تحدد مسار المفسر كما في برامج Perl، كأن نضع في بداية الملف usr/bin/php!#
وبالتالي فإن مفسر PHP يقوم بتنفيذ البرنامج وتمرير مدخلات السطر التنفيذي عبر المتغير argv، كما يقوم بتجهيز وحدة الإدخال القياسية
STDIN (لمدخلات البيانات أو لوحة المفاتيح) و وحدة الإخراج القياسية STDOUT (لمخرجات البيانات).
ويمكن تبعاً لخيال المبرمج أن يستفيد من هذه الميزة كأن يقوم بعمل مجموعة من البرامج الخدمية سواء فيما يتعلق بالملفات أو قواعد
البيانات، أو برامج فحص البريد التلقائي التي تعمل مع CRON وبرمجة آليات (زواحف محركات البحث)، والروبوتات، وغير ذلك.
____________________________________________
برمجة تطبيقات ذات واجهة رسومية عبر PHP GTK
المرجع http://gtk.php.net
هذا المشروع والذي يعتبر احد امتدادات لغة PHP والتي تسمح لمبرجيها بعمل برامج ذات واجهة رسومية GUI، مستقلة عن الويب، وفي نفس
الوقت الاستفادة من كل ميزات PHP الأخرى، وهذا المشروع وإن لم يكن متكاملاً ولكنه قد وصل إلى مستوى متقدم، ويمكن بسهولة الآن تحميل
الحزمة الخاصة بالتنفيذ واستخدامها لعمل برامج PHP ذات واجهة رسومية، علماً أن تصميم البرنامج والواجهة مازال يعتمد على البرمجة
الخطية وليس عن طريق التصميم لأنه لا HTML هنا، ولا أدري إذا كانت هناك برامج تسمح بتصميم واجهة مرئية، ولربما سمعنا قريباً عن Visual
PHP من يدري!
لمعرفة طريقة برمجة واجهات رسومية يمكن الاطلاع على http://gtk.php.net/manual/en كما يمكن تنزيل آخر إصدار من هذا الموقع
http://gtk.php.net/download.php كما يمكن استخدام هذه الحزمة المعدلة في الموقع http://binary.gamer.net.nz
كما أنصح بتنزيل البرنامج php_gtk launcher والذي يسهل ربط برامج php_gtk مع php لتعمل على نظام Windows بالنقر عليها فقط، من
http://www.cweiske.de
ويمكن أيضاً الحصول على عدة برامج وأمثلة أعدها آخرون تقوم بعدة عمليات كبرامج مستقلة ذات واجهة مستقلة (كبرامج تطبيقية، وخدمات
قواعد بيانات والألعاب البسيطة، والوسائط المتعددة وغير ذلك) من http://gtk.php.net/apps
سأشرح استخدام أحد البرامج كمثال، وهو برنامج بسيط جداً لعمل تحويل أرقام من صيغة إلى أخرى (عشرية، ثنائية، ستعشرية..) عبر واجهة
رسومية، يظهر البرنامج كالشكل التالي في الصورة:
مصدر البرنامج http://www.planetsourcecode.com/vb/s...d=582&lngWId=8
ويقوم البرنامج كما هو موضح في المصدر باستدعاء المكتبة الديناميكية php_gtk باستخدام دالة dl
ثم يقوم بتعريف كائن نافذة باستخدام التصنيف GtkWindow Class وربطها بدوال تمثل الأحداث events وتغيير خصائص النافذة، ثم البدء
باستخدام دوال كائن النافذة لتكوين الأزرار ومربع النص الخ.. وربطها بدوال تمثل الأحداث، والتي تقوم بعمليات التحويل.
البرنامج بسيط جداً، وهو مثالي لمن يرغب في تعلم مبدأ استخدام GTK لعمل برامج ذات واجهة رسومية.
الجدير بالذكر أنه ليس بالإمكان حالياً تحويل برامج PHP إلى برامج EXE مستقلة، ولكن ذلك غير مستحيلاً فالفكرة يمكن تطبيقها لكنها لم
تطبق بعد، وأتوقع وجود برامج تقوم بذلك قريباً إن شاء الله.