نحوه ی استفاده از yield در php

سلام به همه ی دوستان گرامی 😀 در این آموزش میخوایم به نحوه ی استفاده از yield در php بپردازیم.

دستور yield از php 5.5 بالاتر قابل استفاده است , این دستور رو میتونید مثل دستور return درون تابع های خودتون استفاده کنید با این تفاوت که دستور yield وقتی اجرا میشه حالت کنونی تابع رو حفظ میکنه!!! یعنی اگه تابعی که دستور yield درون اون قرار داره رو چندین بار اجرا کنید این تابع ادامه ی مسیر اجرای قبلی رو طی میکنه! پس دستور yield وقتی که اجرا میشه حالت کنونی اجرای تابع رو ذخیره میکنه تا در مرحله ی بعدی از همونجا که تابع اجرا شده بود دوباره شروع به کار کنه , خب دیگه توضیحات اظافی نمیدم! بیاید چندتا مثال بزنم براتون متوجه بشید 😀 به مثال زیر دقت کنید:

در مثال بالا ابتدا یه تابع ساختیم! این تابع مقدار ۰ تا ۵ رو با استفاده از دستور yield به خروجی میفرسته! حالا با استفاده از حلقه ی foreach میایم و تابع nums رو اجرا میکنیم و مقدارشو توی متغیر v میریزیم و نمایش میدیم! در هر مرحله که تابع nums اجرا میشه حلقه ی for درون تابع nums روی اعداد ۰ تا ۵ یکی به جلو حرکت میکنه و عدد رو با استفاده از دستور yield باز میگردونه (return میکنه).

شما میتونید با استفاده از تابع iterator_to_array مقادیر توابعی که از دستور yield درون اونا استفاده شده رو پیدا کنید و همه ی این مقادیر رو به صورت ارایه داشته باشید 😀 مثال بالا رو به صورت زیر میتونیم داشته باشیم:

در مثال بالا مقادیر تابع رو با استفاده از دستور iterator_to_array به ارایه تبدیل کردیم و بعدش با استفاده از دستور print_r ارایه رو نشون دادیم 😀

شما میتونید با استفاده از دستور yield توابع خودتون رو هوشمند تر به کار ببرید! مثلا میتونید یه تابع لیست ساز بسازید تا مقادیر ورودی رو براتون به لیست تبدیل کنه! به مثال زیر دقت کنید:

در مثال بالا یه تابع با نام to_html_list نوشتیم که مقادیر ارایه ای رو بهش میدیم و بهمون لیست میده! بعدش با استفاده از دستور to_html_list روی مقادیر خروجی to_html_list حرکت میکنیم! به همین راحتی لیست ما تولید میشه و توی خروجی اون رو نمایش میدیم.

امیدوارم از این اموزش لذت برده باشید. دوستانی که سوال یا مشکلی دارند از بخش نظرات پایین همین پست مطرح کنند تا پاسخ بدم. موفق باشید.

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK
  1. حسین

    سلام خسته نباشید من یه کد شمارنده را داشتم بررسی میکردم تو جی کوئری بعد این تیکه از کد را نفهمیدم منظور از
    $({ Counter: 0 })
    در کد زیر چیست
    $(this).find(‘.timer’).each(function () {
    var $this = $(this);
    $({ Counter: 0 }).animate({ Counter: $this.text() }, {
    duration: 2000,
    easing: ‘swing’,
    step: function () {
    $this.text(Math.ceil(this.Counter));
    }
    });
    });

    • سلام مطمئن هستید کد رو به صورت کامل برای من قرار دادید؟ باید بگم چیزی که من متوجه شدم اینه که counter رو به عنوان یک پراپرتی از شی (object) به ورودی داده چون درون {} قرار گرفته! برنامه رو خط به خط اجرا کنید و جاهای مختلف Alert قرار بدید ببینید چی نمایش میده! من همچنین چیزی تا به حال ندیدم 😐 برنامه رو نباید خیلی پیچیده نوشت خوانایی برنامه پایین میاد.

      • حسین

        سلام کد کامل قالب را براتون ایمیل کردم ولی قسمت شمارش اتوماتیکش همونه من حتی تو قالب خودم همون تیکه کد را گذاشتم و شد خیلی ممنون که توجه کردید من فقط مفهوم این که اومده تو $() و اینون گذاشته { Counter: 0 } نمی فهمم

        • سلام بعله ایمیل شما رو دریافت کردم شرمنده دارم بعد چندین روز (یا هفته) بهتون پاسخ میدم چون من در خدمت سربازی هستم و توی مرخصی ها میام و به سایت میرسم. من کد شما رو بررسی کردم و توی ایمیلی که بهم دادید پاسخ شما رو درج کردم. موفق و سربلند باشید.

می‌خواهید دیدگاهتان را بیان کنید؟