هوک (hooks) در کد ایگنایتر

هوک (hooks) در کد ایگنایتر

هوک (hooks) در کد ایگنایتر – گسترش چارچوب هسته

با استفاده از هوک در کد ایگنایتر شما می توانید ساختار اصلی کد ایگنایتر را تغییر دهید بدون اینکه در هسته (core) تغییری ایجاد نمایید .در واقع هنگامی که کد ایگنایتر اجرا می شود شما می توانید هوک را در زیر کار اجرا نمایید . به طور مثال شما می خواهید کدی را اجرا نمایید قبل از اینکه کنترلر اجرا شود .

فعال سازی هوک (hooks) در کد ایگنایتر

جهت فعال سازی هوک (hooks) در کد ایگنایتر باید فایل پیکر بندی ر ا تنظیم نمایید بنابراین در فایل application/config/config.php تغییر زیر را اعمال می نماییم.

$config['enable_hooks'] = TRUE;

تعریف هوک (hooks) در کد ایگنایتر

هوک ها در فایل application/config/hooks.php تعریف می شود و هر هوک دارای یک آرایه است .

$hook['pre_controller'] = array(
        'class'    => 'MyClass',
        'function' => 'Myfunction',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

توجه نمایید اندیس آرایه در واقع همان ویژگی هوک شما می باشد . در ایجا مثلا ‘pre_controller’ می باشد در ضیر به شرح مثال بالا می پردازیم:

  • class نام کلاس.
  • function نام تابع برای صدا زدن.
  • filename نام فایل.
  • filepath نام پوشه مورد نظر.
  • params پارامترهای ارسالی به تابع.

تکته : فایل شما باید در پوشه application باشد و ترجیحا از توی پوشه hooks .

صدا زدن چندین هوک (hooks) در کد ایگنایتر

برای صدا زدن چندین هوک حتی با ایندکسهای یکسان کافی است طبق روند معمولی عمل کنیم :

$hook['pre_controller'][] = array(
        'class'    => 'MyClass',
        'function' => 'MyMethod',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

$hook['pre_controller'][] = array(
        'class'    => 'MyOtherClass',
        'function' => 'MyOtherMethod',
        'filename' => 'Myotherclass.php',
        'filepath' => 'hooks',
        'params'   => array('red', 'yellow', 'blue')
);

 

پیشنهاد پیرو برای شما :   داکر در لاراول - نصب لاراول

توجه حتما به [] در ابتدای هوک توجه نمایید:

$hook['pre_controller'][]

 

 

اندیس های هوک (hooks) در کد ایگنایتر

  • pre_system خیلی زود در سیستم صدا زده می شود حتی قبل از مسیر یابها و چیزهای دیگر.
  • pre_controller قبل از هر کتنرلری صدا زده می شود.
  • post_controller_constructor می توان گفت در بعد از سازنده کنترلر  و قبل از صدا زدن هر گونه تابع کنترلر.
  • post_controller بعد از صدا زدن کنترلر.
  • display_override دوباره سازی  e _display() متد.
  • cache_override _display_cache() صدا زده شدن به همراه .
  • post_system در آخر پس از انجام همه کارها صدا زده می شود.