آموزش برنامه نویسی و طراحی وب


طراحی سایت لابدان
طراحی نرم افزار با جاوا


این مقاله جز آموزش های برنامه نویسی نمی باشد و فهرستی برای آن موجود نیست

مفهوم hook در codeigniter

it3du  
2017-05-09 22:55:37  
687  
codeigniter  

مفهوم hook در codeigniter

hook چیست و مزایای استفاده از آن چه می باشد

 

در واقع فریمورک ها اگر انعطاف پذیری را نداشتند، به این اندازه محبوب نمی شدند. چون بنا بر نیازمندی های شما ممکن است امکانات خاص و ویژه ایی را بخواهید که اگر فریمورکی که از آن استفاده می کنید آن را نداشته باشد برای شما ناقص محسوب می شود.

اگر codeigniter فقط به شما امکاناتی از قبیل 

  • routing
  • controller ها
  • model ها
  • view ها

را بدهد درواقع یک میکروفریمورک محسوب می شود. اما فریمورک ها به شما این اجازه را می دهند که علاوه بر امکانات موجود قادر به توسعه آن هرچند در هسته فریمورک باشید. مثلا می توانید کتابخانه های شخصی بنویسید و از آن در پروژه های دیگر خود استفاده کنید. یا با اشتراک گذاشتن آن ها دیگر برنامه نویس ها بتوانند از آن کتابخانه استفاده کنند.

برای مثال کتابخانه ایی نوشتید برای تبدیل تاریخ میلادی به شمسی. با اضافه کردن آن به سایر پروژ هایتان می توانید از آن استفاده کنید یا با به اشتراک گذاری آن ها سایر برنامه نویس ها می توانند از آن ها استفاده کنند.

 

و اما مفهوم هوک چیست؟

 

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

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

 

 

برای اینکه شما بتوانید از هوک استفاده کنید باید در آدرس زیر 

 

application/config/config.php

 

مقدار enable_hook را برابر TRUE قرار دهید

 

$config['enable_hook'] = TRUE;

 

تعریف یک هوک

 

هوک ها باید در آدرس زیر تعریف شوند

 

applicatio/config/hooks.php

 

همانطور که گفتیم هوک ها به اسکریپتی در محلی از سایت تریگر میشوند. بنابر این برای تعریف یک هوک باید در فایل hooks.php یک هوک را تعریف کنیم

ساختار یک هوک به شکل زیر است

برای تعریف hook ابتدا به آدرس زیر رفته

 

application/config/hooks.php

 

حالا کد زیر را برای تعریف یک هوک به فایل hooks.php اضافه می کنیم

 

$hook['pre_controller'] = array (
    'class'    => 'MyClass',
    'function' => 'myFunction',
    'filename' => 'MyClass.php',
    'filepath' => 'hooks',
    'params'   => array('param1', 'param2', 'param3')
);

 

در مثال بالا hook point (در واقع منظور رویدادی که باعث تریگر شدن هوک می شود) pre_controller است. یعنی قبل از اینکه کنترلر مربوطه فراخوانی شود

  1. متد myFunction
  2. از کلاس MyClass
  3. فایل MyClass.php
  4. موجود در آدرس hooks
  5. با پارامتر های param1 ، param2 و param3 (پارامتر ها اختیاری هستند)

فراخوانی می شود.

 

حالا باید با توجه به تعریف هوک ، فایل مورد نظر با کلاس تعریف شده و متد تعریف شده را در دایرکتوری تعریف شده ایجاد کنیم. در مثال بالا ما فایل مورد نظر با مشخصات تعریف شده را در دایرکتوری زیر تععین کردیم. اگر این دایرکتوری وجود ندارد آن را ایجاد کنید

 

application/hooks

 

بنابراین فایل MyClass.php را در دایرکتوری بالا ایجاد می کنیم 

 

application/hooks/MyClass.php

 

 

استفاده از lambda ، anonymouse functions با سینتکس ساده

 

می توانید هوکی داشته باشید که به فایلی اشاره نکند. مثال زیر را ببینید

 

$hook['pre_controller'] = function() {
    /* do somthing here */
}

 

Hook Points ها

 

منظور از hook points در واقع مناطقی ، یا محلی می باشد که قرار است رویداد هوک در آن زمان اتفاق بیافتد. codeigniter هوک پوینت های زیر را در نظر گرفته است که اسامی آن ها زمان اتفاق افتادن آن ها را می گوید

 

  • pre_system
  • pre_controller
  • post_controller_constructor
  • post_controller
  • display_override
  • cashe_override
  • post_system

 

pre_system در این زمان فقط benchmark و کلاس hook لود شده است. هیچ فعالیت یا پردازش دیگری مانند روتینگ یا سایر فعالیت ها لود نشده است.

 

pre_controller  قبل از هر کنترلر شما اجرا میشود. (برای هر متد از کلاس کنترلر). تمامی کلاس های روتینگ، امنیتی و پایه قبل از اجرای این نقطه لود شده اند. برای فراخوانی هر متد اتفاق می افتد.

 

post_controller_constructor در واقع زمانی که از کنترلر شما نمونه ایی ایجاد می شود این نقطه برای هوک در نظر گرفته می شود و پس از پایان نمونه سازی اسکریپت اجرا میشود. یعنی این نقطه قبل از pre_controller اجرا می شود.

 

post_controller بعد از پایان کامل کنترلر اجرا می شود

 

در ادامه باز هم از ویژگی های hook ها مانند فراخوانی چند اسکریپت برای یک هوک پوینت مشابه و مثالی عملی از آن در codeigniter را در سایت قرار خواهیم داد.

 

مزایای استفاده از هوک

 

مزایای اصلی هوک، توسعه هسته فریمورک بدون دستکاری هسته آن است. که همین نکته مهمترین قوت استفاده از آن است. چرا که اگر بخواهید فریمورک خود را از ورژنی به ورژن بالاتر آپدیت کنید باید تمام دایرکتوری system ورژن جدید رو با دایرکتوری system موجود در ورژن جاری را تغییر دهید و تمامی تغییرات قبلی را در دایرکتوری system جدید اعمال کنید که سخت و طاقت فرسا می شود!

و چون تمامی فایل های هوک و تنظیمات آن در دایرکتوری application شما قرار دارد . نیاز به نغییرات در برنامه خود ندارید.

 

 

می توانید انتشار قسمت ها جدید آموزش برنامه نویسی و به روز رسانی های جدید سایت را از کانال تلگرام ما دنبال کنید  و یا از قسمت انتهایی سایت ، آدرس it3du را در سایر شبکه های اجتماعی پیدا کنید

 

منبع: it3du.ir

 



طراحی نرم افزار جاوا





به اشتراک بگذارید

فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   کلوب   فیس نما  

مطالب مرتبط

مقاله مشابهی وجود ندارد


دیدگاه کاربران

دیدگاهی وجود ندارد


دیدگاهی ارسال کنید

  نظر شما پس از تایید نویسنده نمایش داده می شود

  نظرات به صورت فینگلیش تایید و جواب داده نمی شوند

  برای وارد کردن کد برنامه نویسی متن بالای تکست باکس را مطالعه فرمایید

  گزینه captcha برای تشخیص انسان از ربات را حتما قبل از ارسال انتخاب کنید

  ایمیل شما در سایت منتشر نمی شود

  پر کردن فیلد های ستاره دار الزامی می باشد

نام *
ایمیل *
وب سایت

استفاده از کد HTML مجاز نمی باشد

متن های انتخاب شده را می توانید با دکمه p به پاراگراف تبدیل کنید

برای وارد کردن کد برنامه نویسی ابتدا متن مورد نظرتان را انتخاب کنید و سپس زبان مورد نظر خودتان را از طریق دکمه ها انتخاب کنید

محتوای دیدگاه *

خروجی کامنت