/
  • خواندن داده ها از یک تابع در صفحه دیگر

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی خواندن داده ها از یک تابع در صفحه دیگر
    نویسنده پیام
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #1
    خواندن داده ها از یک تابع در صفحه دیگر
    سلام خدمت دوستان و اساتید

    آقا امیدوارم این بار سوالم و یکی جواب بده SadSad

    من یه کد دیدم که طرف یه کلاسی نوشته بود که داخلش با یه متد یه صفحه ای رو include میکرد بعد تو اون صفحه data هایی که تو اون متد بود رو نمایش میداد فقط نفهمیدم چجوری پاس داده به صفحه include شده ببینید این صفه کلاسش بود :

    کد PHP:
        class View
        
    {
            private static 
    $_extention '.php';
            public static function 
    render($viewpath,$data)
            {
                
    $viewpath str_replace('.'DIRSEPARATOR$viewpath);
                
    $path=VIEWPATH $viewpath.self::$_extention;
                if(
    is_readable($path))
                {
        
                    include 
    $path;
                }
                else
                {
                    echo 
    "File Is not Exist";
                }
            }
        } 

    که احتمالا از کنترلرش میگیره data و path رو حالا اینجا include میکنه اما تو صفحه خروجی اینجوری بود :
    کد PHP:
    <!DOCTYPE html>
    <
    html>
    <
    head>
        <
    title>Index Page</title>
    </
    head>
    <
    body>
    This is a Index Page Mr-Mrs <?=$data['name']?>
    </body>
    </html> 

    که بازم احتمالا data تو کد اول یه آرایه بوده که کلید name و داره میخونه اما من نفهمیدم که منطق کارش چیه ؟ و اینکه آیا روش دیگه ای هست برای اینکه اطلاعات رو تو صفحه دیگه از یه تابع به همین شکل بگیریم ؟
    اگه دوستان کسی میدونه لطفا یه توضیح کامل بده ممنون میشم.

    ****منظور از پاس دادن یعنی چجوری بدون echo یا Print دادن داره نمایش میده.
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    (آخرین ویرایش در این ارسال: ۱۳۹۵ تير ۸ ۰۷:۱۳ عصر، توسط kiarash_kcm.)
    ۱۳۹۵ تير ۸ ۰۶:۵۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,025
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #2
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    ببین اصلا include کردن رو تو اینطوری فکر کن که یعنی بری کدهای اون صفحه رو بیاری این صفحه

    اینو ببین
    کد PHP:
    <?php
    $name 
    'reza';
    include 
    'page.php'
    کد PHP:
    <?php

    //./page.php
    echo $name//reza 

    کد PHP:
    <?=$data['name']?>
    این کد خلاصه کد
    کد PHP:
    <?php echo $data['name']?>
    هست
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    (آخرین ویرایش در این ارسال: ۱۳۹۵ تير ۸ ۰۷:۳۴ عصر، توسط Reza.)
    ۱۳۹۵ تير ۸ ۰۷:۲۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : ayoubsys
    mortaza آفلاین
    عضو
    ***

    ارسال‌ها: 57
    تاریخ عضویت: ۱۳۹۴ خرداد ۱۴
    اعتبار: 1
    تشکرها : 21
    ( 21 تشکر در 14 ارسال )
    ارسال: #3
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    نقل قول: فقط نفهمیدم چجوری پاس داده به صفحه include شده ببینید این صفه کلاسش بود
    پاس دادن چرا؟؟؟ تو فایل include شده کد php هست که مستقیم از $data که دریافت شده توسط تابع استفاده میکنن

    امیدوارم از کد زیر منظورمو بگیری!
    کد PHP:
    function render($view,$data){

            
    ###incuded file code###
                
    echo $data;
            
    ###end included file code###

        

    نقل قول: منطق کارش چیه ؟
    منطق ؟ خوب ساده ترین راه همینه دیگه برادر !

    از یه طرف میگیره پشت سرش استفاده میکنه ازش!

    template engine baker که خودم نوشتم هم به این صورت استفاده کنه.

    کد PHP:
    <?php 

    class baker
    {
        public static 
    $data;
        public static 
    $tmp;
        public static 
    $Current=[];
        public static 
    $ta;
        public static 
    $edit=true;
        public static 
    $extension='.baker.php';
        public static 
    $baked_extension='.baked.php';
        public static 
    $root_of_theme='';
        public static 
    $root_of_baked_theme='';
        function 
    baker($vals=[])
        {
            
    self::$data=$vals;
        }
        function 
    var_replace($data){
            
    $fore='~\$([a-zA-Z0-9_]+)~';
            
    $foreRe='self::$data["$1"]';

            
    $datapreg_replace($fore,$foreRe$data);
            
            return 
    $data;
        }

        function 
    loop()
        {
            
    $tmp=self::$tmp;

            
    $b='<?php ';
            
    $e=' ?>';
            
    $fore='~@foreach\((.+)\)(\{([0-9]+)\})?~';
            
    $foreRe=$b.'
            $i=0;
            foreach($1){
                if(\'$3\'!=null)
                {
                    if($i==\'$3\'){
                        break;
                    }
                }
                $i++;
                '
    .$e;

            
    $efore='~@endforeach~';
            
    $eforeRe=$b.'}'.$e;
            

            
    $Current='~\{\{[ ]*self::\$data\[([\[\'"a-zA-Z0-9_\]]+)\][ ]*\}\}~';
            
    $CurrentRe='<?php echo self::$data[$1];?>';
            
    $replace_before_exe='~\{\%[ ]*self::\$data\[([\[\'"a-zA-Z0-9_\]]+)\][ ]*\%\}~';
            
    $replace_before_exeRe='<?php echo self::$data[$1];?>';

            
    $b='<?php ';
            
    $e=' ?>';

            
    $if='~\@if\((.+)\)~';
            
    $ifRe=$b.'if($1){'.$e;
            
    $eif='~\@endif~';
            
    $eifRe=$b.'}'.$e;
            
            
    $else='~@else~';
            
    $elseRe=$b.'}else{'.$e;
            
    $eelse='~@endelse~';
            
    $eelseRe=$b.'}'.$e;

            
    $elseif='~@elseif\((.+)\)~';
            
    $elseifRe='<?php }elseif($1){ ?>';
            
    $eelseif='~@endelseif~';
            
    $eelseifRe='<?php } ?>';

            
    $section='~@section\((.+)\)~';
            
    $sectionRe=$b.'self::$data[$1]=\'';
            
    $esection='~@stop~';
            
    $esectionRe='\';'.$e;

            
    $getsection='~@GetSection\((.+)\)~';
            
    $getsectionRe=$b.'echo self::$data[$1];'.$e;

            
    $set='~@set\((.+)=(.+)\)~';
            
    $setRe=$b.'$1=$2;'.$e;
            
    $extend='~(@extend\((.+)\))~';
            
    $tags='~\(\~[ ]*([a-zA-Z0-9_]+)[ ]*([a-z:;A-Z0-9_\=\-\'"]+)[ ]*\~\)~si';
            
    $tagsRe='<$1 $2>';
            
    $etags='~\(/([a-zA-Z0-9_]+)\)~';
            
    $etagsRe='</$1>';


            
    $include="~\{\~[ ]*include[ ]*([a-zA-Z0-9_\-\.]+)[ ]*\~\}~";
            for(
    $i=0;$i>-1;$i++){
                if(
    preg_match($include$tmp$matches)){
                    
    $tmp str_replace($matches[0],file_get_contents($matches[1]),$tmp);
                }else{
                    break;
                }
            }

            for(
    $i=0;$i>-1;$i++){
                if(
    preg_match($extend$tmp$matches)){
                    
    $tmp str_replace($matches[0],file_get_contents($matches[2]),$tmp);
                }else{
                    break;
                }
            }
            
    $tmp=self::var_replace($tmp);
            
    preg_match($replace_before_exe$tmp,$matches);

            for(
    $i=0;$i>-1;$i++){
                if(
    preg_match($replace_before_exe$tmp$matches)){
                    
    $tmp str_replace($matches[0],self::$data[trim($matches[1],'"')],$tmp);
                }else{
                    break;
                }
            }
            
    $e='~@end~';
            
    $eRe='<?php } ?>';

            
    $tmppreg_replace($set,$setRe$tmp);

            for(
    $i=0;$i>-1;$i++){
                if(
    preg_match($section$tmp$matches)){
                    
    $p='~'.str_replace(')','\\)',str_replace('(''\\('$matches[0])).'(.+)@stop~s';

                    
    preg_match($p$tmp,$m);
                    
    self::$data[$matches[1]]=$m[1];
                    
    $tmp=str_replace($m[0], ''$tmp);
                    
                }else{
                    break;
                }
            }
            for(
    $i=0;$i>-1;$i++){
                if(
    preg_match($getsection$tmp$matches)){

                    
    $tmp str_replace($matches[0],self::$data[$matches[1]],$tmp);
                }else{
                    break;
                }
            }
            
    $tmppreg_replace($tags,$tagsRe$tmp);
            
    $tmppreg_replace($etags,$etagsRe$tmp);
            
    $tmppreg_replace($fore,$foreRe$tmp);
            
    $tmppreg_replace($efore,$eforeRe$tmp);
            
    $tmppreg_replace($Current,$CurrentRe$tmp);
            
    $tmppreg_replace($if,$ifRe$tmp);
            
    $tmppreg_replace($eif,$eifRe$tmp);
            
    $tmppreg_replace($eelseif,$eelseifRe$tmp);
            
    $tmppreg_replace($elseif,$elseifRe$tmp);
            
    $tmppreg_replace($else,$elseRe$tmp);
            
    $tmppreg_replace($eelse,$eelseRe$tmp);
            
    $tmppreg_replace($e,$eRe$tmp);

            
            
    self::$tmp=$tmp;    
        }
        function 
    run(){
            
    ob_start ();
            eval(
    self::$tmp);
        }

        function 
    compile($name){
            
    $file_address=self::$root_of_theme.$name.self::$extension;
            
    $baked_file_addressself::$root_of_baked_theme.$name.self::$baked_extension;

            
    self::$tmp='?>'.file_get_contents($file_address);
            
    self::$tmp=str_replace('|>','?>',str_replace('<|''<?php'self::$tmp));
            
            
    self::loop();
            
    $FileName $baked_file_address;
            
    $FileHandle fopen($FileName'w') or die("can't open file");
            
    fclose($FileHandle);    
            
    file_put_contents($FileNameself::$tmp);    

        }
        function 
    view($name){
            
    $file_address=self::$root_of_theme.$name.self::$extension;
            
    $baked_file_addressself::$root_of_baked_theme.$name.self::$baked_extension;
            if(
    self::$edit || !file_exists($baked_file_address)){
                
    self::compile($name);
            }else{
                
    self::$tmp=file_get_contents($baked_file_address);
            }
            
    self::run();

        }    
    }
    include 
    'baker.class.php';
    baker::$data=[
                
    'usercount'=>2,
                
    'users'=>[
                    [
    'sath'=>'admin','id'=>'0','name'=>'ali','family'=>'hamidi'],
                    [
    'sath'=>'premium','id'=>'1','name'=>'reza','family'=>'maleki'],
                    [
    'sath'=>'user','id'=>'2','name'=>'mortaza','family'=>'faryabi']
                ],
            ];
    baker::view($_GET['url']);
    ?>
    ۱۳۹۵ تير ۸ ۱۰:۵۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #4
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    سلام ممنون از جواب هر دو ولي دمتون گرم منم ميدونم include كارش چي هست Big Grin
    سوالم اينجا بود كه چرا بدون echo خوند كه جناب شيخله گفتن ساده نويسيه اما چرا تو ورژن php من كار نميكنه و سوالم اين بود كه جور ديگه ميشه نوشت همين ساده نويسي رو كه تو ورژن هاي بالاتر كار كنه ؟
    ورژن php من 5.3.8 هستش که کار نمیکنه با این نوع ساده نویسی.
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    (آخرین ویرایش در این ارسال: ۱۳۹۵ تير ۹ ۰۸:۳۹ صبح، توسط kiarash_kcm.)
    ۱۳۹۵ تير ۹ ۰۶:۳۱ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Alaa غایب
    علا عالم فلکی
    ***

    ارسال‌ها: 945
    تاریخ عضویت: ۱۳۹۲ فروردين ۲۰
    اعتبار: 52
    تشکرها : 745
    ( 663 تشکر در 478 ارسال )
    ارسال: #5
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    سلام،
    باید توی PHP.ini فعال کنین.
    __________________________________________________________________________
    ۱۳۹۵ تير ۹ ۱۲:۲۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #6
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    (۱۳۹۵ تير ۹ ۱۲:۲۹ عصر)Alaa نوشته شده توسط:  سلام،
    باید توی PHP.ini فعال کنین.
    کد:
    short_open_tag = On
    ممنون پیداش کردم ... فقط یه سوال این تو تمام host ها فعال هستش ؟؟
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    ۱۳۹۵ تير ۹ ۰۱:۱۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Alaa غایب
    علا عالم فلکی
    ***

    ارسال‌ها: 945
    تاریخ عضویت: ۱۳۹۲ فروردين ۲۰
    اعتبار: 52
    تشکرها : 745
    ( 663 تشکر در 478 ارسال )
    ارسال: #7
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    معمولا فعال هست. اگرم نباشه می‌تونین بگین فعال کنن، چون مورد حساسی نیست.
    خیلی‌ها میگن بهتره اصلا استفاده نشه از این روش، همون حالت عادی بنویسین بهتره، میگن اینجوری امکان داره برنامه یه جا کار کنه، یه جا کار نکنه!
    خودم چون بیشتر مواقع رو سرور کار می‌کنم، از این روش استفاده می‌کنم. مشکلی هم نداشتم.
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۹۵ تير ۹ ۰۲:۱۴ عصر، توسط Alaa.)
    ۱۳۹۵ تير ۹ ۰۲:۱۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    kiarash_kcm آفلاین
    عضو
    ***

    ارسال‌ها: 159
    تاریخ عضویت: ۱۳۹۲ بهمن ۷
    اعتبار: 5
    تشکرها : 12
    ( 48 تشکر در 41 ارسال )
    ارسال: #8
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    (۱۳۹۵ تير ۹ ۰۲:۱۴ عصر)Alaa نوشته شده توسط:  معمولا فعال هست. اگرم نباشه می‌تونین بگین فعال کنن، چون مورد حساسی نیست.
    خیلی‌ها میگن بهتره اصلا استفاده نشه از این روش، همون حالت عادی بنویسین بهتره، میگن اینجوری امکان داره برنامه یه جا کار کنه، یه جا کار نکنه!
    خودم چون بیشتر مواقع رو سرور کار می‌کنم، از این روش استفاده می‌کنم. مشکلی هم نداشتم.
    ممنون واقعا خیلی کمک شد بهم .HeartHeart
    __________________________________________________________________________
    [تصویر:  iranphp.jpg]
    ۱۳۹۵ تير ۹ ۰۲:۱۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Alaa غایب
    علا عالم فلکی
    ***

    ارسال‌ها: 945
    تاریخ عضویت: ۱۳۹۲ فروردين ۲۰
    اعتبار: 52
    تشکرها : 745
    ( 663 تشکر در 478 ارسال )
    ارسال: #9
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    (۱۳۹۵ تير ۹ ۰۶:۵۶ عصر)mortaza نوشته شده توسط:  البته من یه جا خوندم تو ورژن 7 پی اچ پی قابلیت کوتاه نویسی برداشته شده پس بهتره برای پایدار بودن برنامه در آینده معمولی بنویسید

    منم شنیده بودم، ولی در حد شایعه بود!
    منبعی هست که بگه رسما حذف شده؟
    __________________________________________________________________________
    ۱۳۹۵ تير ۹ ۰۷:۰۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    mortaza آفلاین
    عضو
    ***

    ارسال‌ها: 57
    تاریخ عضویت: ۱۳۹۴ خرداد ۱۴
    اعتبار: 1
    تشکرها : 21
    ( 21 تشکر در 14 ارسال )
    ارسال: #10
    RE: خواندن داده ها از یک تابع در صفحه دیگر
    تو خود xampp 7.0.6 تست کردم کار کرد!Idea
    گویا شایعه بوده واقعا !
    پست قبل رو حذف کردم موجب سردرگمی کسی نشه باید تشکر از شماBig Grin
    عذز ...Wink

    The ASP tags <%, %>, <%=, and the script tag <script language="php"> are removed from PHP.
    <% با <% اشتباه گرفته بودم
    (آخرین ویرایش در این ارسال: ۱۳۹۵ تير ۹ ۱۱:۲۹ عصر، توسط mortaza.)
    ۱۳۹۵ تير ۹ ۱۱:۰۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Alaa
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS