Controller Plugins এবং হুকস

Controllers এবং Actions - জেন্ড ফ্রেমওয়ার্ক (Zend Framework) - Web Development

290

Zend Framework (এখন Laminas) কন্ট্রোলার প্লাগইন এবং হুকস (Hooks) ব্যবহার করে অ্যাপ্লিকেশন ডেভেলপমেন্টের ক্ষমতা বিস্তৃত করে। কন্ট্রোলার প্লাগইন এবং হুকস অ্যাপ্লিকেশনের বিভিন্ন প্রক্রিয়াতে কাস্টম কার্যক্রম সম্পাদন করতে সাহায্য করে, যেমন রিকোয়েস্ট প্রক্রিয়াকরণ, রেসপন্স ম্যানিপুলেশন, বা রাউটিং ফেজে ইন্টারসেপশন।

কন্ট্রোলার প্লাগইন কী?

Zend Framework এ Controller Plugin হলো এমন একটি ক্লাস যা কন্ট্রোলারের বিভিন্ন ফেজে ব্যবহৃত হয় এবং সিস্টেমের বিভিন্ন অংশে সাধারণ কার্যক্রমকে সাধারণীকৃত এবং পুনঃব্যবহারযোগ্য করে তোলে। কন্ট্রোলার প্লাগইন সাধারণত কন্ট্রোলারের dispatch মেথডে ব্যবহৃত হয়, যা ইউজারের রিকোয়েস্ট প্রক্রিয়া করে এবং কন্ট্রোলার অ্যাকশন রান করে।

কন্ট্রোলার প্লাগইন সাধারণত নিম্নলিখিত কাজগুলো করতে পারে:

  • রিকোয়েস্ট অথবা রেসপন্স পরিবর্তন করা
  • অ্যাকশন মেথডে বা কন্ট্রোলারের অন্য অংশে কিছু সাধারণ কাজ করা
  • কিছু অতিরিক্ত লজিক প্রয়োগ করা, যেমন লগিং, অথেন্টিকেশন চেক করা, অথবা কাস্টম রাউটিং ফিল্টার প্রয়োগ করা

কন্ট্রোলার প্লাগইন তৈরি

কন্ট্রোলার প্লাগইন তৈরি করতে আপনাকে একটি ক্লাস তৈরি করতে হবে যা Zend\Mvc\Controller\Plugin\AbstractPlugin ক্লাস থেকে ইনহেরিট করবে। নিচে একটি কন্ট্রোলার প্লাগইন তৈরির উদাহরণ দেয়া হলো:


১. কন্ট্রোলার প্লাগইন তৈরি

ধরি, আপনি একটি LoggerPlugin তৈরি করতে চান, যা প্রতিটি কন্ট্রোলারের অ্যাকশন রান হওয়ার আগে লগিং করবে।

ফোল্ডার স্ট্রাকচার:

module/Application/src/Controller/Plugin/LoggerPlugin.php

LoggerPlugin.php:

<?php
namespace Application\Controller\Plugin;

use Laminas\Mvc\Controller\Plugin\AbstractPlugin;
use Laminas\Log\Logger;
use Laminas\Log\Writer\Stream;

class LoggerPlugin extends AbstractPlugin
{
    protected $logger;

    public function __construct()
    {
        // লগ লেখার জন্য একটি স্ট্রিম লেখক তৈরি করা হচ্ছে
        $writer = new Stream('data/log/application.log');
        $this->logger = new Logger();
        $this->logger->addWriter($writer);
    }

    public function logAction($action)
    {
        // অ্যাকশন নামটি লগ করা হচ্ছে
        $this->logger->info("Action executed: " . $action);
    }
}

এখানে LoggerPlugin প্লাগইনটি logAction() মেথডে একটি সিম্পল লগিং ফাংশনালিটি প্রদান করে, যা প্রতিটি অ্যাকশন রানের সময় লগ ফাইলে অ্যাকশনের নাম লেখে।


২. কন্ট্রোলার প্লাগইন রেজিস্টার করা

এখন আপনি এই প্লাগইনটি কন্ট্রোলার অ্যাকশনে ব্যবহার করতে পারবেন। তবে, প্রথমে আপনাকে এই প্লাগইনটি আপনার অ্যাপ্লিকেশন কনফিগারেশন ফাইলে রেজিস্টার করতে হবে।

ফোল্ডার স্ট্রাকচার:

module/Application/config/module.config.php

module.config.php:

<?php
namespace Application;

return [
    'controller_plugins' => [
        'invokables' => [
            'logger' => 'Application\Controller\Plugin\LoggerPlugin',
        ],
    ],
];

এখানে controller_plugins সেকশনে LoggerPlugin প্লাগইনটি রেজিস্টার করা হয়েছে।


৩. কন্ট্রোলারে প্লাগইন ব্যবহার

এখন আপনি আপনার কন্ট্রোলারে এই প্লাগইন ব্যবহার করতে পারবেন। প্লাগইনটি কন্ট্রোলারের dispatch মেথডের মধ্য দিয়ে ব্যবহার করা যায়।

ফোল্ডার স্ট্রাকচার:

module/Application/src/Controller/IndexController.php

IndexController.php:

<?php
namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        // Logger প্লাগইন ব্যবহার করা হচ্ছে
        $this->logger->logAction('indexAction');

        return new ViewModel();
    }
}

এখানে, indexActionLoggerPlugin এর logAction() মেথড ব্যবহার করা হচ্ছে। যেকোনো সময় যখন indexAction কল হবে, এটি application.log ফাইলে লগ লিখে ফেলবে।


হুকস (Hooks) কী?

Zend Framework এ হুকস (Hooks) হল এমন ফাংশন বা মেথড যা অ্যাপ্লিকেশনের বিভিন্ন ফেজে ইন্টারসেপ্ট করতে এবং নির্দিষ্ট কার্যক্রম সম্পাদন করতে সাহায্য করে। একটি হুক সাধারণত একটি নির্দিষ্ট প্রক্রিয়ার মধ্যে কোড ইনজেক্ট করার জন্য ব্যবহৃত হয়।

Zend Framework এ কয়েকটি মূল হুক ব্যবহৃত হয়:

  • onDispatch(): কন্ট্রোলারের dispatch() মেথড চালানোর আগে এই হুকটি কল হয়। এটি কন্ট্রোলারের কার্যকারিতা পরিবর্তন করতে পারে, যেমন লগিং, অথেন্টিকেশন চেক ইত্যাদি।
  • onDispatchError(): যদি কন্ট্রোলারের কোনো অ্যাকশন চলাকালীন ত্রুটি ঘটে, তবে এই হুকটি কল হয়।
  • onBootstrap(): অ্যাপ্লিকেশন বুটস্ট্র্যাপিং (শুরু) হওয়ার সময় এটি কল হয়। এটি সাধারণত মডিউল শুরু করতে ব্যবহৃত হয়।

কন্ট্রোলার হুক ব্যবহার করা

Zend Framework এ onDispatch() হুক ব্যবহার করা খুবই সাধারণ। উদাহরণস্বরূপ, একটি কন্ট্রোলারের onDispatch মেথড ব্যবহার করে আপনি একটি কাস্টম লজিক প্রয়োগ করতে পারেন, যেমন ইউজার অথেন্টিকেশন চেক করা।

IndexController.php:

<?php
namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function onDispatch(\Laminas\Mvc\MvcEvent $e)
    {
        // ইউজার অথেন্টিকেশন চেক
        if (!$this->isAuthenticated()) {
            // ইউজার অথেন্টিকেশন না থাকলে লগইন পেজে রিডাইরেক্ট করা হচ্ছে
            return $this->redirect()->toRoute('login');
        }
        
        // onDispatch হুকের পরবর্তী অংশে রান করতে দেয়া হচ্ছে
        return parent::onDispatch($e);
    }

    public function indexAction()
    {
        return new ViewModel();
    }

    private function isAuthenticated()
    {
        // এখানে ইউজার অথেন্টিকেশন চেকের লজিক থাকবে
        return false; // উদাহরণস্বরূপ, আমরা নেগেটিভ চেক করছি
    }
}

এখানে onDispatch() হুক ব্যবহার করে কন্ট্রোলারে ইউজারের অথেন্টিকেশন চেক করা হচ্ছে। যদি ইউজার অথেন্টিকেটেড না থাকে, তবে তাকে লগইন পেজে রিডাইরেক্ট করা হচ্ছে।


সারাংশ

Zend Framework (Laminas) এ Controller Plugins এবং Hooks ব্যবহার করে আপনার অ্যাপ্লিকেশনের কার্যকারিতা এবং লজিক আরও উন্নত করা যায়। কন্ট্রোলার প্লাগইনগুলি অ্যাপ্লিকেশনের যেকোনো অংশে সাধারণ কার্যক্রমের জন্য ব্যবহৃত হয়, যেমন লগিং বা ইউজার অথেন্টিকেশন চেক করা। হুকস (Hooks) ব্যবহার করে অ্যাপ্লিকেশনের নির্দিষ্ট ফেজে কোড ইনজেক্ট করা যায়, যেমন onDispatch() অথবা onBootstrap()। এই ক্ষমতাগুলি আপনাকে অ্যাপ্লিকেশনের মধ্যে কাস্টম কার্যক্রম সম্পাদন করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...