যারা বাংলাদেশের ৩৬ তম Zend Certified Engineer এবং এই সাইট (w3programmers) এর স্বত্বাধিকারী এবং লেখক Masud Alam স্যার এর কাছে কাছে সপ্তাহে ২ দিন ক্লাস, ৬ দিন প্রাকটিস করতে চান তাদের জন্য আগামী ১ February 2018 (বৃহস্পতি এবং শুক্রবার সন্ধ্যা ৬:০০ টা রাত ৯:০০ টা) থেকে শুরু হতে যাচ্ছে ৫ মাস ব্যাপী Professional Web Design & Development With HTML, CSS, JAVASCRIPT, JQUERY, PHP & MySQL for Beginners কোর্স (এই কোর্স টি যারা ফ্রিল্যান্সিং এবং আউটসোর্সিং কাজে আগ্রহী বিশেষ ভাবে তাদের জন্য design করা হয়েছে। ), আগামী ৪ February 2018 ( রবি এবং মঙ্গলবার সন্ধ্যা ৬:০০ টা থেকে রাত ৯:০০ টা ) থেকে শুরু হতে যাচ্ছে ৪ মাস ব্যাপী Zend Certified PHP 7.1 Engineering কোর্স। যেটা Advance PHP কোর্স নামে পরিচিত । এবং ৫ February 2018 (সোম এবং বুধবার সন্ধ্যা ৬:০০ টা থেকে রাত ৯:০০ টা) থেকে শুরু হতে যাচ্ছে ৪ মাস ব্যাপী Laravel 5.5 Professional Beginning to Advance Course কোর্স ।এই কোর্স গুলোতে তিনি ছাত্রদের কে সপ্তাহে ২ দিন ৩ ঘন্টা করে ৬ ঘন্টা ক্লাস নিবেন , এবং শনি থেকে বৃহস্পতি সপ্তাহে ৬ দিন ই স্যার এর অফিসে বসে প্রাকটিস করার সুযোগ দিবেন ! এতে প্রাকটিস করা কালীন ছাত্র-ছাত্রীরা কোনো সমস্যায় পড়লে তাৎক্ষণিক স্যার এর সহযোগিতা পাবে . (উল্লেখ্য: Training গুলো স্যার তার techbeeo software company'r পাশাপাশি পরিচালনা করে থাকেন।) কোর্স গুলো সম্পর্কে বিস্তারিত জানতে পারবেন এই লিংকে : Course Details .কোর্স গুলোর প্রত্যেকটির ফী নির্ধারণ করা হয়েছে ৩০,০০০ টাকা। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

PHP Object Oriented Programming পর্ব-১০: PHP OOP Overloading

PHP OOP তে Overloading কি?

PHP OOP Overloading

class এর বাহির থেকে class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে class এর মধ্যে (যা পূর্ব থেকে define করা নাই এমন) যেকোনো property অথবা Method তৈরী করার পদ্ধতিকে PHP Object Oriented Programming এর পরিভাষায় Overloading বলা হয়। Overloading কে আমরা class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে property এবং Method তৈরী করার পদ্ধতিও বলতে পারি।

Overloading কত প্রকার ?

PHP তে Overloading মূলত দুইপ্রকার:
১. Property Overloading
২. Method Overloading

Property Overloading কি?

class এর বাহির থেকে class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে class এর মধ্যে (যা পূর্ব থেকে define করা নাই এমন) যেকোনো property তৈরী করার পদ্ধতিকে PHP Object Oriented Programming এর পরিভাষায় Property Over Loading বলা হয়। Property Overloading কে আমরা class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে property তৈরী করার পদ্ধতিও বলতে পারি।

PHP তে Property Overloading এ আমরা __set() function দিয়ে Overloaded property তে value সেট করি, __get() function দিয়ে Overloaded property এর value get করি, __unset() function দিয়ে Overloaded property এর value, class এর বাহির থেকে খালি করি এবং __isset() function দিয়ে Overloaded property এর value আছে কি না তা class এর বাহির থেকে চেক করি

PHP তে Property Overload করার জন্য __set() এবং __get ফাঙ্কশনের কাজ কি?

PHP তে Property Overload করার জন্য __set() function দিয়ে class এর বাহির থেকে নতুন property তৈরী করা যায়। এবং তৈরিকৃত property তে value set করা যায়। __get() function দিয়ে Overloaded property এর value কে class এর বাহির থেকে get করা যায়।

<?php
class PropertyTest
{
    /**  Location for overloaded data.  */
    private $data = array();

    public function __set($name, $value)
    {
        echo "Setting '$name' Property to '$value'\n";
        $this->data[$name] = $value;
    }

    public function __get($name)
    {
        echo "Getting '$name' Property with Value : ";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
    }

}


$obj = new PropertyTest;

$obj->a = "Masud Alam";
echo $obj->a . "\n";

?>

Property Overloading Value Set and Get

ব্যাখ্যা: প্রথমে আমরা __set() function দিয়ে class টির মধ্যে $a নামে একটি property তৈরী করি (যা আমাদের class এ define করা ছিলোনা ) একই সাথে $a তে value সেট করি। এবং একই সাথে $data নামে একটা private array property তে property name এবং তার value টি সংরক্ষণ করে রাখি। তারপর __get() function দিয়ে class টির মধ্যে $data array property থেকে $a নামে property এর value গেট করি।

PHP তে Property Overload করার জন্য __isset() ফাঙ্কশনের কাজ কি?

class এর বাহির থেকে যখন কোনো overloaded property কে isset() function দিয়ে চেক করা হয়, তখন class এর মধ্যে __isset() function টি স্বয়ংক্রিয় ভাবে execute হয়। এবং overloaded property এর value আছে কি না তা চেক করার সুযোগ করে দেয়।

<?php
class PropertyTest
{
    /**  Location for overloaded data.  */
    private $data = array();

    public function __set($name, $value)
    {
        echo "Setting '$name' Property to '$value'\n";
        $this->data[$name] = $value;
    }

    public function __get($name)
    {
        echo "Getting '$name' Property with Value : ";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
    }
    // Checking Property Value is set?
    public function __isset($name)
    {
        echo "Is '$name' Property set?\n";
        echo isset($this->data[$name])?"Yes '$name' Property is set":"No '$name' Property is Not set";
        echo "\n";
    }

}


$obj = new PropertyTest;

$obj->a = "Masud Alam";
echo $obj->a . "\n";
isset($obj->a);
isset($obj->b);

?>

PHP Property Overloading check Property Value is set

ব্যাখ্যা: লক্ষ্য করুন , লাইন নম্বর ৩৫ এবং ৩৬ এ ফাঙ্কশন isset() দিয়ে দুটি unknown property কে class এর মধ্যে value সেট আছে কিনা চেক করি, আর isset () function call করার সাথে সাথে আমাদের class এর মধ্যে ২১ নম্বর লাইনে __isset() ফাঙ্কশনটি স্বয়ংক্রিয় ভাবে execute হয়। overloaded property গুলোর value আছে কিনা তা চেক করে।

PHP তে Property Overload করার জন্য __unset() ফাঙ্কশনের কাজ কি?

class এর বাহির থেকে যখন কোনো overloaded property কে unset() function দিয়ে চেক করা হয়, তখন class এর মধ্যে __unset() function টি স্বয়ংক্রিয় ভাবে execute হয়। এবং overloaded property এর value কে unset করার সুযোগ করে দেয়।

<?php
class PropertyTest
{
    /**  Location for overloaded data.  */
    private $data = array();

    public function __set($name, $value)
    {
        echo "Setting '$name' to '$value'\n";
        $this->data[$name] = $value;
    }

    public function __get($name)
    {
         echo "Getting '$name' Property with Value : ";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
    }
    
    public function __isset($name)
    {
        echo "Is '$name' Property set?\n";
        echo isset($this->data[$name])?"Yes '$name' Property is set":"No '$name' Property is Not set";
        echo "\n";
    }

    public function __unset($name)
    {
        echo "Unsetting '$name'\n";
        unset($this->data[$name]);
    }

}


$obj = new PropertyTest;

$obj->a = "Masud Alam";
echo $obj->a . "\n";
echo isset($obj->a);
unset($obj->a);
echo isset($obj->a);
echo "\n";

?>

PHP Property Overloading unset Property Value

ব্যাখ্যা: লক্ষ্য করুন , লাইন নম্বর ৪২ এ ফাঙ্কশন unset() দিয়ে unknown property এর value unset করার জন্য call করি, আর unset () function call করার সাথে সাথে আমাদের class এর মধ্যে ২8 নম্বর লাইনে __unset() ফাঙ্কশনটি স্বয়ংক্রিয় ভাবে execute হয়। overloaded property গুলোর value unset করে।

Method Overloading কি?

class এর বাহির থেকে class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে class এর মধ্যে (যা পূর্ব থেকে define করা নাই এমন) যেকোনো Method তৈরী করার পদ্ধতিকে PHP Object Oriented Programming এর পরিভাষায় Method Over Loading বলা হয়। Method Overloading কে আমরা class ব্যবহারকারীর চাহিদা অনুযায়ী স্বয়ংক্রিয়ভাবে Method তৈরী করার পদ্ধতিও বলতে পারি।

PHP তে Method Overloading এ আমরা __call() function দিয়ে class এর বাহিরের থেকে Overloaded Method তৈরী করি এবং Overloaded Method এ Parameter set করি। এবং __callStatic() function দিয়ে class এর বাহিরের থেকে Overloaded static Method তৈরী করি এবং Overloaded static Method এ Parameter set করি

<?php
class MethodTest
{
    public function __call($name, $arguments)
    {
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }

    public static function __callStatic($name, $arguments)
    {
        echo "Calling static method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

$obj = new MethodTest;
$obj->runTest('in object context');

MethodTest::runTest('in static context');
?>

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।

Leave a Reply

Your email address will not be published. Required fields are marked *