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

الموضوع: درس برمجة اسكربت اخباري [الجزء الثاني]

  1. #1

    درس برمجة اسكربت اخباري [الجزء الثاني]



    بسم الله الرحمن الرحيم

    الدرس السابق :
    درس عملي (برمجة إخباري) بإسلوب راقي
    ما سنتناوله في هذا الدرس بإذن الله

    1- عمل كائن التحكم في القوالب
    2- تصميم القوالب الخاصه بالاسكربت
    3- عمل كائن الاتصال بقاعدة البيانات


    برمجة كائن التحكم في القوالب

    بسم الله الرحمن الرحيم

    أولاً أخي / اختي العزيز/ه راجع هذا الدرس حتى تستطيع مواكبة ما نقول
    البرمجة كائنيه التوجيه في الإصدار php5


    كائن التحكم في القوالب و دوره الرئيسي في البرمجه

    يعتبر من اهم الكائنات في برمجتنا هذه حيث يعتمد عليه الاسكربت في قرائة ملفات html و جعلها تتعامل معها ضمن ملفات البي اتش بي فنفصل التصميم عن برمجتنا للمحافظه عليها و سهولة التعديل علي تصميمها دون خوض المصمم في تعقيدات البرمجه


    نظرة علي عامة الكائن
    دور الكائن الرئيسي هو تحويل اكواد معينه سنقوم بعملها لتعمل ضمن ملف ال html الي بي اتش بي
    يتم تنفيذها ضمن العمل

    سنقوم بعمل كائنين و نعمل عملية توريث فيما بينهم
    الكائن الاول و هو سيكون مسؤل عن دوال تحويل هذه الاكواد الي اكواد بي اتش بي
    و الكائن الثاني هو لأخراج ملف القالب ضمن ملف البي اتش بي ليعمل في سياق العمل



    الكائن

    -------------

    كود PHP:
    <?php
    /*#############################################*/
    /*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
    //   كائن التعامل مع القوالب                 //
    //تمت البرمجة بواسطة حازم علي ,www.egyplus.org //
    /*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
    /*########################################*/

    /*
    | معلومات هذا الملف
    | 20/8/2008  تم إنشائه في تاريخ
    | 21/8/2008 اخر تعديل في تاريخ
    */
    /*
     كائن التعامل استبدال قيم الاكواد في ملفات الي القالب الي شفرات بي اتش بي
    */


    class code_output{

       protected 
    $templateFolder 'styles'// اسم مجلد القوالب


       
    public $contents       ;  //  متغير يحمل المحتوي 


        
       
    protected function __variable($var){
       
    $output str_replace('.','"]["',$var[1]);  
       return 
    '<?= $GLOBALS["'.$output.'"]; ?>' ;
       }

       protected function 
    __StaticVariable($var){
       
    $output str_replace('.','"]["',$var[1]);
       return 
    '$GLOBALS["'.$output.'"]' 
       }

       protected function 
    __InnerVariable($var){
       
    $output str_replace('.','"]["',$var[1]);
          return 
    '<? echo $'.$output.'; ?>' ;
       }



       protected function 
    __if($var){
       
    $output str_replace('eq','==',$var[1]);
       
    $output preg_replace_callback('#{([a-zA-Z0-9\_\.\$]+)}#',array('code_output','__StaticVariable'),$output);
       return 
    "<?if($output){?>" ;
       }

       protected function 
    __elseif($var){
       
    $output str_replace('eq','==',$var[1]);
       
    $output preg_replace_callback('#{([a-zA-Z0-9\_\.\$]+)}#',array('code_output','__StaticVariable'),$output);
       return 
    "<?}elseif($output){?>" ;
       }


       protected function 
    __loop($var){
       
    $output str_replace('eq','==',$var[1]);
       
    $output preg_replace_callback('#{([a-zA-Z0-9\_\.\$]+)}#',array('code_output','__StaticVariable'),$output);
       return 
    '<?$GLOBALS[i] = 0;foreach('.$output.' as $GLOBALS["key"]=>$GLOBALS["value"]){++$GLOBALS[i];?>' ;
       }

       protected function 
    __loop_value($var){
       
    $output str_replace('eq','==',$var[1]);
       
    $output preg_replace_callback('#{([a-zA-Z0-9\_\.\$]+)}#',array('code_output','__StaticVariable'),$output);
       return 
    '<?$GLOBALS[i] = 0;foreach('.$output.' as $GLOBALS["key"]=>$GLOBALS[\''.$var[2].'\']){++$GLOBALS[i];?>' ;
       }


       protected function 
    __eval($var){
       
    $output preg_replace_callback('#([a-zA-Z0-9\_\.\$]+)#',array('code_output','__StaticVariable'),$var[1]);
       return 
    '<?$this->fetch_eval('.$output.');?>' ;
       }


      protected function 
    incode(){
        
    $text $this->contents ;

        
    $text preg_replace_callback('#<if condition="(.*)">#',array('code_output','__if'),$text);

        
    $text preg_replace_callback('#<elseif condition="(.*)">#',array('code_output','__elseif'),$text);

        
    $text preg_replace('#(<else>|<else />)#','<?}else{?>',$text);

        
    $text preg_replace('#\<include file\=\"(.*)\"\>#','<?$this->print_output("$1");?>',$text);

        
    $text preg_replace('#\<eval code\=\"(.*)\"\>#','<?$this->fetch_eval($1);?>',$text);

        
    $text preg_replace_callback('#<loop for="(.*)" value="(.*)">#',array('code_output','__loop_value'),$text);

        
    $text preg_replace_callback('#<loop for="(.*)">#',array('code_output','__loop'),$text);

        
    $text preg_replace('#(</if>|</loop>)#','<?}?>',$text);

        
    $text preg_replace_callback('#fetch\_eval\(([a-zA-Z0-9\_\.]+)\)#',array('code_output','__eval'),$text);

        
    $text preg_replace_callback('#{([a-zA-Z0-9\_\.\$]+)}#',array('code_output','__variable'),$text);

        
    $text preg_replace_callback('#\(\_([a-zA-Z0-9\_\.\$]+)\)#',array('code_output','__InnerVariable'),$text);


         return 
    $text;
      }



    }

    // كائن إخراج ملف الكائن ضمن سياق العمل ككود بي اتش بي

    class template_engine  extends code_output
    {

       public function 
    __construct($templateinfo,$folder,$dir='.'){


         
    $this->templateFolder $dir.'/'.$templateinfo["template_folder"].'/'.$folder;

         unset(
    $templateinfo);

          }


       private function 
    __loadString($template){
         
    $path =  $this->templateFolder .'/'$template ;
          if(!
    file_exists($path))
           exit(
    "$path لم يتم العثور علي القالب");

          return 
    file_get_contents($path);

       }


       public function 
    print_output($template){

        global 
    $block;
        
    $path =  $this->cacheFolder .'/'$template ;
        
    $this->contents $this->__loadString($template);
        
    $HTML $this->incode();
      
              eval(
    "?>".$HTML."<?");

       }

       public function 
    return_output($template){

        global 
    $block;
        
    $path =  $this->cacheFolder .'/'$template ;
        
    $this->contents $this->__loadString($template);
        
    $HTML $this->incode();
              return 
    $HTML;
       }




       public function 
    fetch_eval($tpl){
           eval(
    "?>".$tpl."<?");
          }

       }



    ?>

    طريقة استخدام الكائن يتبع..






    __________________
    الحمد لله
    إيحي بلس لحلول تطبيقات الويب
    هل جربت مضاعفة عدد زوار موقعك عن طريق خدمة زوار ؟


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    448


    السلام عليكم

    مشكور اخى الكريم جارى المتابعة معك ان شاء الله

    جعله الله فى ميزان حسناتك





    __________________
    المصرية للكلادينج والالومنيوم والاعلان
    01004636205
    amrdarwish@gmail.com

  3. #3
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    جزاك الله خيرا اخي الكريم





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  4. #4
    عضو فعال
    تاريخ التسجيل
    Sep 2006
    المشاركات
    1,051


    جزاك الله خير

    كم نحن بحاجة الى مثل هذه الدروس










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

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

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