- دوشنبه 21 خرداد 1397 ساعت 10:38
- 3.1.9
- در حال تکمیل
- فعال
فیچر هوک در کدایگنایتر ابزاری را ارائه میدهد تا بدون نیاز به تغییر فایلهای هسته، بتوانید به هسته فریمورک وارد شده و تغییرات مورد نظرتان را روی آن اعمال کنید. هنگامی که کدایگنایتر اجرا میشود، فرآیندهایی اجرایی خاصی را دنبال میکند که در پست فلوچارت اپلیکیشن توضیح داده شده است. با این وجود ممکن است مواردی پیش بیاید که بخواهید دستوراتی را در مرحله خاصی از فرآیند اجرای اپلیکیشن اجرا کنید. برای مثال، برای مثال ممکن است بخواهید اسکریپتی را دقیقا قبل و یا بعد از لود کنترلرها اجرا کنید، یا ممکن است بخواهید یکی از اسکریپتهای خود را در مکان دیگری اجرا کنید.
فعالسازی هوک
فیچر هوک میتواند به صورت گلوبال از طریق مقداردهی آیتم زیر در فایل application/config/config.php فعال/غیرفعال شود.
$config['enable_hooks'] = TRUE;
تعریف یک هوک
هوکها در فایل 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 نام دایرکتوری که اسکریپت شما در آن قرار دارد. دقت کنید: اسکریپت شما باید در یک دایرکتوری داخل دایرکتوری application/ قرار گیرد، بنابراین مسیر فایل نسبت به آن دایرکتوری است. برای مثال، اگر اسکریپت شما در application/hooks/ قرار گرفته باشد، به سادگی میتوانید از ‘hooks’ به عنوان مسیر فایل خود استفاده کنید. اگر اسکریپت شما در application/hooks/utilities/ قرار داشته باشد، باید از ‘hooks/utilities’ به عنوان مسیر فایل استفاده کنید. بدون اسلش پایانی (trailing slash).
- params هر پارامتری که میخواهید به اسکریپت ارسال کنید. این آیتم اختیاری است.
همچنین میتوانید از فانکشنهای بینام/لامبادا (یا کلوژرها) به عنوان هوک استفاده کنید، که سینتکس سادهتری دارند:
$hook['post_controller'] = function()
{
/* do something here */
};
فراخوانی چندباره با یک هوک
اگر میخواهید با یک هوکپوینت، بیش از یک اسکریپت را اجرا کنید، کافی است آرایه خود را به صورت چند بعدی تعریف کنید، مانند:
$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'][]
این کار به شما اجازه میدهد تا چندین اسکریپت را با یک هوکپوینت استفاده کنید. ترتیب تعریف آرایهها، ترتیب اجرا را مشخص میکند.
هوکپوینتها
لیست زیر، مجموعهای از هوکپوینتهای در دسترس هستند.
- pre_system در ابتدای اجرای سیستم فراخوانی میشود. در حالی که در این مرحله، تنها کلاسهای benchmark و hook لود شدهاند. هنوز مسیریابی یا پروسه دیگری اتفاق نیافتاده است.
- pre_controller دقیقا قبل از فراخوانی کنترلر شما فراخوانی میشود. تمام کلاسهای پایه، مسیریابی و بررسیهای امنیتی انجام شده است.
- post_controller_constructor بلافاصله بعد از ساخت یک آبجکت از کنترلر شما و قبل از فراخوانی هر متدی فراخوانی میشود.
- post_controller بعد از اجرای کامل کنترلر شما فراخوانی میشود.
- display_override متد _display() را بازنویسی میکند. این متد، در انتهای اجرای سیستم، برای ارسال صفحه نهایی به مرورگر استفاده میشود. این کار به شما امکان این را میدهد تا متودولوژی نمایش خودتان را استفاده کنید. دقت کنید که باید با روش انتساب رفرنسی، سوپرآبجکت کدایگنایتر را به یک متغییر $this->CI =& get_instance() تخصیص دهید، سپس با فراخوانی $this->CI->output->get_output() به داده نهایی دسترسی خواهید داشت.
- cache_override امکان این را به شما میدهد تا به جای متد در لایبرری ، متد خود را فراخوانی کنید. در واقع به شما امکان این را میدهد تا از مکانیزم نمایش کش خود استفاده کنید.
- post_system پس از اینکه صفحه رندر شده نهایی به مرورگر ارسال شد، در پایان اجرای سیستم و بعد از ارسال دادههای نهایی به مرورگر اجرا میشود.
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه