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

امروز در انتشارات کلید وب سرویس می خواهیم در زمینه زبان برنامه نویسی 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