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

الموضوع: برمجة برامج بواجهات رسومية باستخدام PHP .

  1. #1
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431

    برمجة برامج بواجهات رسومية باستخدام PHP .





    لغة PHP أصبحت من أهم اللغات في عالم الويب والإنترنت لقوتها كلغة Server-Side لكنها وإن كانت كذلك فهي تبقى لغة مفسرة يمكن استخدامها لكتابة برامج صغيرة محلية أو حتى واجهات رسومية سأقوم بكتابة برنامج بواجهة رسومية بواسطة لغة PHP والمكتبة الرسومية GTK+.



    التنصيب والإعداد:
    صفحة المشروع الأساسية.
    لابد أولاً أن ننصب إن لم تكن PHP منصبة قبلاً فلا بأس.
    أفضل طريقة للتنصيب هي استعمال Gnope والذي سوف ينصب PHP مع إضافات GTK+ من خلال واجهة تنصيب في ويندوز.
    * لاحظ أن Gnope سوف ينصب PHP4 أي الإصدار الأقدم كما أن هناك العديد من مشاكل التنصيب والإعداد بسبب توقف المشروع لمدة من الزمن ثم عودته ووعد المطورون بأداء أفضل.
    من أجل التنصيب اليدوي يتوجب عليك تنصيب الإضافات extensions ثم تعديل ملف php.ini
    إن كان لديك PHP سابقاً فعدل ملف php.ini وأضف السطر:

    كود PHP:
    extension php-gtk2.dll 
    <?php ثم شغل البرنامج من المجلد الذي في إضافات GTK+.
    وذلك بالذهاب إليه في سطر الأوامر ثم كتابة اسم البرنامج “php” ثم فراغ ثم اسم الملف الذي كتبته.
    لا تنسَ تحميل دليل المبرمج المفصل للرجوع إليه عند كتابة البرامج.




    البدء بالبرمجة:

    سأقوم أولاً بكتابة برنامج صغير يظهر واجهة.

    كود PHP:
    if(!class_exists('gtk')) 
    die(
    "Cannot load GTK+ module."); 
     
    $window = new GtkWindow(); 
    $window->set_title('Hello, World'); 
    $window->connect_simple('destroy', array('gtk''main_quit')); 
     
    $lblHello = new GtkLabel('Hello, World'); 
     
    $window->add($lblHello); 
     
    $window->show_all(); 
    Gtk::main(); 
    شرح البرنامج:




    كود PHP:
    if(!class_exists(’gtk’))
    die(
    "Cannot load GTK+ module."); 
    نقوم هنا بتفحص وجود ملفات GTK+ في PHP إن لم توجد سيخرج البرنامج مع طباعة رسالة خطأ.



    كود PHP:
         $window = new GtkWindow(); 
    نقوم هنا بتعريف متغير والذي هو class من نوع GtkWindows أي نافذة GTK.


    كود PHP:
    $window->set_title(’HelloWorld’); 
    السطر السابق يؤدي إلى تغيير عنوان النافذة إلى Hello, World.



    كود PHP:
    $window->connect_simple(’destroy’, array(’gtk’‘main_quit’)); 
    يستدعي هذا السطر methode والتي هي connect_simple والتي تقوم بدورها هنا بالخروج من البرنامج عن طريق تنفيذ Gtk::main_quit عند حدوث الإشارة signal والتي هي distroy أي عندما يضغط المستخدم زر إغلاق النافذة سننهي البرنامج ليس فقط النافذة


    كود PHP:
    $lblHello = new GtkLabel(’HelloWorld’);[/ 
    يعرف السطر السابق عنوان Label نصي مكتوب فيه Hello, World.


    كود PHP:
    [color=#000000]$window->add($lblHello);[/color]
    [color=#000000][/color] 
    يضيف السطر السابق العنوان النصي إلى النافدة


    كود PHP:
    $window->show_all();
    Gtk::main(); 
    السطرين السابقين يظهران النافذة
    والثاني ينقل التحكم إلى main في GTK والذي يقوم بدوره بكافة الأمور.
    لأنه ببساطة إذا لم نقم بهذا سيظهر البرنامج النافذة ثم يتابع تنفيذ أوامر البرنامج أي أنه سيغلقها وعندها سيكون إظهار النافذة عبارة عن وميض.
    عند تشغيل البرنامج يجب أن تظهر النافذة هكذا:






    الآن وقد قمنا بتشغيل البرنامج يمكننا كتابة برامج مفيدة:

    كتبت هذا البرنامج بسرعة وهو وإن كان يحتوي على ضعف في الرسم والتنسيق إلا أنه يظهر كيفية كتابة برامج رسومية مفيدة تعمل بلغة PHP


    كود PHP:
    <?php
    require 'include.php ';
     
    if (!
    class_exists'gtk ')) {
    die(
    "Cannot find GTK module\n");
    }
     
    $wnd = new GtkWindow();
    $wnd->set_title'hashsum ');
    $wnd->set_icon($wnd->render_icon(Gtk::STOCK_DIALOG_AUTHENTICATIONGtk::ICON_SIZE_MENU));
    $wnd->set_resizable(false);
     
    $wnd->connect_simple'destroy ', array( 'gtk ''main_quit '));
     
    $menubar = new GtkMenuBar();
    $file = new GtkMenuItem'_File ');
    $menubar->append($file);
    $quit = new GtkMenuItem'_Quit ');
    $mnuFile = new GtkMenu();
    $mnuFile->append($quit);
    $file->set_submenu($mnuFile);
    $quit->connect_simple'activate ', array( 'gtk ''main_quit '));
     
    $lblAscii = new GtkLabel'_ASCII Text 'true);
    $lblmd5 = new GtkLabel'_MD5'true);
    $lblsha1 = new GtkLabel'_SH1'true);
    $lblhex = new GtkLabel'_HEX 'true);
     
    $txtAscii = new GtkEntry();
    $txtAscii->set_max_length(24);
    $txtmd5 = new GtkEntry();
    $txtsha1 = new GtkEntry();
    $txthex = new GtkEntry();
     
    $txtmd5->set_property'editable 'false);
    $txtsha1->set_property'editable 'false);
    $txthex->set_property'editable 'false);
     
    $btn = new GtkButton'Calculate ');
    $btn->set_flags(Gtk::CAN_DEFAULT);
     
    $btnAbout = new GtkButton'About ');
     
    $lblAscii->set_mnemonic_widget($txtAscii);
    $lblmd5->set_mnemonic_widget($txtmd5);
    $lblsha1->set_mnemonic_widget($txtsha1);
    $lblhex->set_mnemonic_widget($txthex);
     
    $btn->connect_simple'clicked ''calc '$txtAscii$txtmd5$txtsha1$txthex);
    $btnAbout->connect_simple'clicked '‘about ');
    $txtAscii->connect_simple( '
    activate ', array($wnd, 'activate_default '));
     
    $tbl = new GtkTable(3, 2);
    $tbl->attach($lblAscii, 0, 1, 0, 1);
    $tbl->attach($txtAscii, 1, 2, 0,1);
    $tbl->attach($btn, 1, 2, 1, 2);
    $tbl->attach($lblmd5, 0, 1, 2, 3);
    $tbl->attach($txtmd5, 1, 2, 2, 3);
    $tbl->attach($lblsha1, 0, 1, 3, 4);
    $tbl->attach($txtsha1, 1, 2, 3, 4);
    $tbl->attach($lblhex, 0, 1, 4, 5);
    $tbl->attach($txthex, 1, 2, 4, 5);
    $tbl->attach($btnAbout, 0, 2, 5, 6);
     
    $box = new GtkVBox();
    $box->pack_start($menubar);
    $box->pack_start($tbl);
     
    $wnd->set_default($btn);
    $wnd->add($box);
    $wnd->show_all();
    Gtk::main();
    ?>

    يقوم البرنامج السابق بإدارج الملف include.php والذي هو


    كود PHP:
     
    <?php
    function calc (GtkEntry $asciiGtkEntry $md5GtkEntry $sha1$hex){
     
    $text $ascii->get_text();
    $c '';
     
    if (!
    $text)return;
     
    $md5->set_text(md5($text));
     
    $sha1->set_text(sha1($text));
     
    for (
    $i=0$i<strlen($text); $i++){
    $c .= '0x' dechex(ord($text[$i])) . ' ';
    $hex->set_text($c);
    }
    }
     
    function 
    about (){
     
    $about = new GtkAboutDialog();
     
    $about->set_name('Hashsums');
    $about->set_version('1.0');
    $about->set_comments("Hashsums is programmed by GTK+ and PHP.\n Programmed By ChArLoK_16.\nwebsite: http://wordpress.charlok16.com");
    $about->set_copyright('Copyright (C) 1982-2009 ChArLoK_16');
    $about->set_license(implode(", file('license.txt')));
    $about->set_logo($about->render_icon(Gtk::STOCK_DIALOG_AUTHENTICATION, Gtk::ICON_SIZE_DIALOG));
    $about->set_icon($about->render_icon( Gtk::STOCK_ABOUT, Gtk::ICON_SIZE_MENU));
    $about->set_website('http://charlok16.wordpress.com');
     
    $about->run();
    }
    ?>


    سأشرح بعض الأشياء شرحاً سريعاً ويمكنك مراجعة دليل المبرمج لمراجعة أية functions أو methodes مستعملة.
    أولاً ملف include.php يحوي دالتين الأولى تحسب الـmd5 و sha1 و hex للنصوص التي تمرر إليها عن طريق مربع نص أدخل فيه المستخدم شيئاً
    والدالة الثانية تقوم بإظهار مربع حوار “حول البرنامج” وتستخرج معلومات الرخصة من ملف license.txt والتي هي في هذه الحالة GPL 3.
    الملف الثاني مكون من جدول يتضمن عناصر التصميم، يمكن تعداد حاويات العناصر لرؤية أفضل لكنني لم أفعل ذلك راجع دليل المبرمج
    في هذا الجدول يوجد مربع نص ليكتب المستخدم بداخله ما شاء تحته زر ليشغل الدالة calc ويعيد بعد ذلك إظهار النتائج وأخيراً زر لإظهار نافذة “حول البرنامج” وطبعاً قائمة للخروج من البرنامج.












    منقول من هنا :-
    برمجة برامج بواجهات رسومية باستخدام PHP
    شكراً للكاتب , وبالتوفيق جميعاً إن شاء الله :nice:






    التعديل الأخير تم بواسطة ff5006 ; 10-07-2009 الساعة 02:24 AM


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    357


    بارك الله فيك اخويff5006

    بس عندي ثلاثه اسأله:
    1-كيف استطيع تنصيب المكتبة على لينكس
    2-قرأت عن المكتبه قبل كذا لكن الصراحه مافهمت في ماذا تستخدم.؟
    3-عند الدخول لسي بنل تظهر لوحة الاسم والرقم السري..هل هذه اللوحه مبرمجه بهذه المكتبه ..؟
    وبارك الله فيك يالغالي
    وأتمنى مااكون اثقلت عليك بالاسأله.






  3. #3
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    مرحباً اخوي رومنسيksa
    , بصراحه اخوي انا والله مالي خبره بالمكتبه , لكن راح اكلم الكاتب بإذن الله واطلب منه النظر للموضوع وسأعطيه عضويتي ليجيب على الأسئله ,,,
    حياك الله و شكراً لك .






  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    شكرا أخي الكريم على نقل هذه المقالة الجميلة والمفيدة.

    بالنسبة لأسئلة الأخ رومنسي:

    2) تستخدم لتطوير تطبيقات سطح مكتب عادية باستخدام لغة PHP وليس تطبيقات ويب كما اعتدنا أن نستخدمها، بكلام آخر يمكن أن تستخدمها مثل لغة فيجوال بيسك

    3) لا ... ما تتحدث عنه نفذ باستخدام ملف ‎.htaccess






  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    932


    هل يمكن تحويل البرنامج إلى ملف تنفيذي exe مثلاً ؟





    __________________
    نحن أمة إقرأ التي لا تقرأ

  6. #6
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    أولاً شكر جزيل للأخ ff5006 لإعارتي عضويته للرد

    1-كيف استطيع تنصيب المكتبة على لينكس
    بسيطة حمل ملفات الـextensions ثم عدل ملف الـPhp.ini
    الشرح المفصل هنا: PHP-GTK : PHP-GTK 2 Manual : Installation on Linux

    2-قرأت عن المكتبه قبل كذا لكن الصراحه مافهمت في ماذا تستخدم.؟
    المكتبة تستخدم لبرمجة برامج كالتي تعمل عليها وإن كانت ليست بنفس القوة كما قال الأخ DNSerror

    3-عند الدخول لسي بنل تظهر لوحة الاسم والرقم السري..هل هذه اللوحه مبرمجه بهذه المكتبه ..؟
    لا يا أخي إن GTK تبرمج رسومات لبرامج سطح مكتب (متصفحات، محررات نصوص) يعني برامج منفصلة وليس للرسم داخل صفحات الويب.

    3-عند الدخول لسي بنل تظهر لوحة الاسم والرقم السري..هل هذه اللوحه مبرمجه بهذه المكتبه ..؟
    طالما أن php هي لغة مفسرة فإنها لا تحتاج إلى عمل ملف exe أو ملف Binary بشكل عام لأنها ستعمل بنفس الأداء ولا أعلم إن كان هناك أي مشاريع لترجمة compile برامج php كما أنها ستكون خطوة غير جيدة طالما أن اللغة تستعمل بشكل أساسي كلغة Server-Side

    ويمكن زيارة هذا الرابط لمجتمع PHP-GTK:
    PHP-GTK Community | : a community site for PHP-GTK
    وهناك العديد من البرامج والألعاب الرسومية المصصمة بهذه اللغة:
    PHP-GTK Application Showcase | PHP-GTK Community

    وبارك الله فيكم
    ChArLoK_16





    التعديل الأخير تم بواسطة ff5006 ; 10-07-2009 الساعة 06:32 PM

  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    357


    اها ..يعني مالها دخل ببرمجة الويب

    وجزاكم الله خير اخوي خالد و والاخ كاتب الموضوع على التوضيح










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

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

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