قلاب (hooks) در پلاگین نویسی PHP

امروز در انتشارات کلید وب سرویس می خواهیم در زمینه زبان برنامه نویسی PHP و به خصوص بخش ایجاد یک سیستم مدیریت پلاگین صحبت کنیم ، خیلی از دوستان برنامه نویس زیاد با این روش کار نمی کنند چون سامانه های تولید شده عاری از هر پلاگین واسط فروش و یا بعد طراحی می باشد و به این دلیل مطالب در این زمینه به فارسی و حتی انگلیسی نیز کم است . وردپرس (PHP)حالا شاید بپرسید در اینترنت در مورد پلاگین نویسی سیستم مدیریت محتوای وردپرس اطلاعات موجود است ، بله همین طور که می دانید استفاده از پلاگین های وردپرس صرفا برروی سیستم مدیریت محتوایی وردپرس کاربری و متنوع است .دلایل آموزش مباحث و سوق دادن برنامه نویسان به این روش برنامه نویسیبزرگترین دلیل ایجاد واسطه اجرایی و بازگذاشتن دست کاربران و برنامه نویسانامروز در یکی از پروژه های همکاری شده با تیم برنامه نویسی سانی وب به اولین سرویس مالی ایرانی بر خوردم . این سیستم با وجود میلیون ها کد داخلی و سرویس های خارجی بر پایه سیستم پلاگین نوشتار شده است و خیلی راحت هم برنامه نویسان تیم در حال تولید پلاگین ها برای بخش های مختلف بودن این برنامه نویسان فارق از بدنه اصلی و دست بردن به ساختار یکپارچه سیستم می توانستند صد ها پلاگین مدیریت شونده برای سیستم طراحی کنند و بعد از بررسی و انجام تست های استاندارد (خیلی جالب از روش تست رگولاسیون نرم افزا استفاده می گردد) به منبع پلاگین سامانه قرار می دادند ، تا در صورت انتخاب کاربران و نصب و راه اندازی گردد .این پروژه تا الان در مرحله تولید است و امیدواریم زود تر به بازار عرضه گردد . در زمان ارائه حتما به ساختار سامانه و هسته مرکزی - ماژول ها و قابلیت ها می پردازیم . تا اینجا هم بدون هماهنگی توضیح ارائه شده .خوب حالا من که فردی کنجکاوی هستم شروع کردم به سوال پرسیدن که این روش با چه ساختاری طراحی و تولید میوشد . در نظر داشته باشیدمن در بخش Security in sending web service requests در حال فعالیت بودم و خوب تا جایی هم می شود از این سوالات پرسید و لی انصافا آن ها هم جواب های درست و حساب شده می دادند.خوب روش به چه شکل بوده است ، تیم برنامه نویسی با استفاده از یک پروژه متن باز به نام PHP-Hooks در حال کار بودند این پروژه به صورت خاصی شخصی سازی شده بود . ولی ماهیت عمل کرد این روش یکی می باشد وصرفا بخش های امنیت سامانه تغییراتی داشته است .گفته برنامه نویسان :The PHP Hooks Class is a fork of the WordPress filters hook system rolled in to a class to be ported into any php based system.همین طور که معلوم این پروژه کلاس استفاده شده در هسته وردپرس است که برای هرپروژه ای بومی سازی شده است .روش استفادهاستفاده از این پروژه بسیار ساده است ، صرفا باید فایل Hook را در پلاگین قرار دهیم .include_once('php-hooks.php');و در ادامه مثل وردپرس می توانیم از هوک استفاده کنیم.global $hooks; $hooks->add_action('header_action','echo_this_in_header'); function echo_this_in_header(){ echo 'this came from a hooked function'; }این کد به صورت زیر قابل استفاده می شود . یک هوک به نام header_action می سازیم و یک function قرار می دهیم . که صرفا یک پارامتر چاپ نمایدinclude_once('php-hooks.php'); global $hooks; $hooks->add_action('header_action','echo_this_in_header'); function echo_this_in_header(){ echo 'این متن یک نمونه است'; }و برای نمایش خروجی هم به صورت کد زیر global $hooks; $hooks->do_action('header_action');همین طور که می بینید . فقط کافی نام هوک بنویسیم که همان header_action که بالا تر تولید کرده ایم .حالا می شود این بخش را در هدر سایت و یا در قیمت های دیگر تولید و نوشتار کرد . این دیگه بسته به نوع برنامه نویسی شما می باشد .در زیر هم متد ها قرار می دهم که می توانید از آن ها استفاده کنید add_action تولید فانکشن کد - مثال بالا که ما فانکشن چاپ محتوا را به عبارت header_action متصل کردیم ، در نظر داشته باشید این عبارت قبلا توسط do_action در کد ما قرار داد شده است و ما فقط از آن استفاده می کنیم و این قابلیت به ما داده است که بینهایت فانکشن برای آن تولید کنیم .do_actionبخش اجرایی فانکشن های تولید شده توسط ما با اسم از اختصاصی تولید شده توسط ما در پوسه یا بخش های برنامه نویسی سایت . مثل مثال بالا $hooks->do_action('header_action');ما فقط بخش نام add_action به این ساختار اضافه کردیم و از این به بعد با این نام هر فانکشنی تولید کنیم در این محل قابل اجرا است .remove_actionدر بعضی از موارد نیاز دارید چند add_action در قالب ایجاد کنید ولی نمی خواهید برای مثال یکی از آن ها اجرا شود می توانید از این روش برای حذف اجرایی add_action استفاده کنید . در نظر داشته باشید این کد از قالب یا کد برنامه حذف نمی شود بلکه صرفا بلاک می شود و قابل اجرا نیست و موارد دیگر که می توانید در آدرس زیر مشاهده نمایید https://github.com/bainternet/PHP-Hooks اینم یک تجربه من بود از چند روز همکاری با تیم برنامه نویس سانی وب و خوشحالم از کسب این تجربه . من را از نظرات و لایک ها خود آگاه کنید . با تشکر https://virgool.io/keyapico/%D8%AA%D8%B3%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%DA%86%D8%B1%D8%AE%D9%87-%D8%AA%D8%B3%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%DA%A9%D9%84%DB%8C%D8%AF-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-pna9lthpvdkt https://virgool.io/keyapico/%D9%BE%D9%86%D8%AC-%D8%AA%D8%B1%D8%A7%D8%A8%D8%A7%D8%AA-%D8%AF%D8%A7%D8%AF%D9%87-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AA%D9%88%D8%B3%D8%B7-%DB%8C%DA%A9-%D8%AA%DB%8C%D9%85-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-cubzadvsl7lg https://virgool.io/keyapico/%D9%BE%D8%B4%D8%AA-%D9%BE%D8%B1%D8%AF%D9%87-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B4%D8%A7%D8%AF-11-%D9%85%DB%8C%D9%84%DB%8C%D9%88%D9%86-%D9%86%D8%B5%D8%A8-%D9%81%D8%B9%D8%A7%D9%84-tuyrwtrpw1h3