النتائج 1 إلى 7 من 7

الموضوع: حول إنشاء تطبيقات PHP مستقلة CLI/GTK

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137

    حول إنشاء تطبيقات PHP مستقلة CLI/GTK



    قد يكون هذا الموضوع ليس له ارتباط وثيق ببرمجة مواقع الإنترنت إلا أنه هام لكل محبي لغة 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(STDIN2);

     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(STDIN255));
     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 مستقلة، ولكن ذلك غير مستحيلاً فالفكرة يمكن تطبيقها لكنها لم

    تطبق بعد، وأتوقع وجود برامج تقوم بذلك قريباً إن شاء الله.





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً


  2. #2
    عضو فعال
    تاريخ التسجيل
    Nov 2002
    المشاركات
    1,092


    قمة في الإبداع
    هكذا عهدناك دائماً





    __________________
    البريد
    almuslim@gmail.com
    الماسنجر
    muslem@php.net
    Mr.Muslem غير متواجد حالياً

  3. #3
    Banned
    تاريخ التسجيل
    Nov 2002
    المشاركات
    242


    دروس ممتازه تقدمها اخوي صلاح لنا و نطمع في المزيد

    لكن واجهتني مشكلة في ملف example1.php
    بعد ما ادخلت الكود به شغلته عن طريق الدوس عن طريق هذا الامر
    C:\AppServ1\php>php example1.php
    و
    C:\AppServ1\php>
    هو مسار الملف على الجهاز

    بعد ما ادخلته ظهرت لي رسالتين خطا بالـDos و هي
    <b>Warning</b>: fgets(): supplied argument is not a valid File-Handle resource
    in <b>C:\AppServ1\php\example1.php</b> on line <b>11</b><br />
    <br />
    <b>Fatal error</b>: Maximum execution time of 30 seconds exceeded in <b>C:\AppS
    erv1\php\example1.php</b> on line <b>11</b><br />
    و على ما يبدو لي من الرسالة انه يوجد خطا بالسطر رقم 11 في دالة
    fgets(STDIN, 2);
    و شكراً لك اخوي صلاح نتمنى لك التوفيق





    The Legend غير متواجد حالياً

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2001
    المشاركات
    3,680


    رد مقتبس من Mr.Muslem
    قمة في الإبداع
    هكذا عهدناك دائماً






    __________________
    الحالة في سوالف : غير نشط


    لاَ اِلَهَ اِلاَّ اَنْتَ سُبْحَانَكَ اِنِّي كُنْتُ مِنَ الظَّالِمِينَ

    الألفاظ هي الثياب التي ترتديها أفكارنا، لذا ..يجب ألا تظهر أفكارنا في ثياب رثة بالية
    محمود المسعودي غير متواجد حالياً

  5. #5
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    أخي The Legend
    يجب أن تستخدم الإصدار الأخير من PHP4.3.0
    وتأكيد أيضاً من تحديد مسار CLI أثناء التنفيذ..
    C:\AppServ1\php>cli\php example1.php





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  6. #6
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    Mr.Muslem و Moodeey
    شكراً لكما





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  7. #7
    عضو فعال
    تاريخ التسجيل
    Jul 2002
    المشاركات
    1,557


    درس قيم جداً

    جزاك الله كل خير اخ فجوال





    __________________
    هل تبحث عن نطاقات مميزة, لها معنى؟
    إذا ما رأيك بإلقاء نظرة على هذه الباقة..
    XPlus غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض