مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

Eventها یا رویدادها در فریمورک Yii


شما می توانید از"eventها" یا "رویدادها" برای تزریق کد سفارشی به نقطه اجراییِ خاص، استفاده کنید. شما می توانید کد سفارشی را به یک event اضافه کنید و هنگامی که این event اجرا می گردد، کد نیز اجرا شود. به عنوان مثال، زمانی که یک کاربر جدید در وب سایت شما ثبت نام می کند، یک شیء logger می تواند رویدادی به نام UserRegistered را، اجرا کند. اگر کلاسی نیاز به event ی داشته باشد، باید آن را از کلاس yii\base\Component گسترش دهید(extend کنید).

یک event handler یک PHP callback است. شما می توانید از callback های زیر استفاده کنید :

  • یک تابع global پی اچ پی به عنوان یک string
  • یک تابع ناشناس (anonymous function)
  • یک آرایه از نام کلاس و یک متد به عنوان یک string، به عنوان مثال: ['ClassName', 'methodName']
  • یک آرایه از یک شی و یک متد به عنوان یک string، به عنوان مثال: [$obj, 'methodName']

مرحله 1 - برای اضافه کردن یک handler به یک event شما بایستی متد yii\base\Component::on() را فراخوانی نمایید.

$obj = new Obj;
// this handler is a global function
$obj->on(Obj::EVENT_HELLO, 'function_name');
// this handler is an object method
$obj->on(Obj::EVENT_HELLO, [$object, 'methodName']);
// this handler is a static class method
$obj->on(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']);
// this handler is an anonymous function

 
$obj->on(Obj::EVENT_HELLO, function ($event) {
   // event handling logic
});

شما می توانید یک یا چند handler را به یک event اضافه کنید. handlerهای اضافه شده به Event به همان ترتیبی که به event متصل شده اند، اجرا می شوند.

مرحله 2 - برای جلوگیری از فراخوانی handler ها ، باید پروپرتی yii\base\Event::$handled را با مقدار true ست کنید.

$obj->on(Obj::EVENT_HELLO, function ($event) {
   $event->handled = true;
});

مرحله 3 - برای وارد کردن یک handler به ابتدای یک صف، باید متد yii\base\Component::on() را فراخوانی کنید، و برای پارامتر چهارمِ آن، مقدار false را بفرستید.

$obj->on(Obj::EVENT_HELLO, function ($event) {
   // ...
}, $data, false);

مرحله 4 - برای اجرای یک event، باید متد yii\base\Component::trigger() را فراخوانی کنید.

namespace app\components;
use yii\base\Component;
use yii\base\Event;
class Obj extends Component {
   const EVENT_HELLO = 'hello';
   public function triggerEvent() {
      $this->trigger(self::EVENT_HELLO);
   }
}

مرحله 5 - برای جدا کردن یک handler از یک event، باید متدyii\base\Component::off()  فراخوانی کنید.

$obj = new Obj;
// this handler is a global function
$obj->off(Obj::EVENT_HELLO, 'function_name');
// this handler is an object method
$obj->off(Obj::EVENT_HELLO, [$object, 'methodName']);
// this handler is a static class method
$obj->off(Obj::EVENT_HELLO, ['app\components\MyComponent', 'methodName']);
// this handler is an anonymous function
 
$obj->off(Obj::EVENT_HELLO, function ($event) {
   // event handling logic
});

 

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید