PHP Professional এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

PHP functions পর্ব-২: Function within function,conditional এবং Recursive function

PHP তে Function এর মধ্যে function ব্যাপারটি কি ?

যখন একটি function কে আরেকটি function এর মধ্যে declare করা হয়, PHP অথবা যেকোনো প্রোগ্রামিং এর পরিভাষায় একে বলা হয় functions within function বা function এর মধ্যে function. আর এর জন্য আপনাকে যা কাজ করতে হবে :

  • প্রথমে Parent function অর্থাৎ যেই function এর মধ্যে function টি declare করা হয়েছে, সেই function টি কল করতে হবে।
  • তারপর child function বা প্যারেন্ট function এর মধ্যের function টি কল করতে পারবেন।

নিচের উদাহরণ লক্ষ্য করুন:

<?php
function foo() 
{
  function bar() 
  {
    echo "I don't exist until foo() is called.\n";
  }
}

/* We can't call bar() yet
   since it doesn't exist. */

foo();

/* Now we can call bar(),
   foo()'s processing has
   made it accessible. */

bar();

?>

ব্যাখ্যা: function foo কল করার পরই function bar কল করা যাবে ।

PHP তে Conditional Function কি ?

যখন কোনো function, কোনো একটা condition true হওয়ার পর declare বা create হয় । PHP অথবা যেকোনো প্রোগ্রামিং এর পরিভাষায় একে বলা হয় conditional function. নিচের উদাহরণ লক্ষ্য করুন:

<?php

$makefoo = true;

/* We can't call foo() from here 
   since it doesn't exist yet,
   but we can call bar() */

bar();

if ($makefoo) {
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}

/* Now we can safely call foo()
   since $makefoo evaluated to true */

if ($makefoo) foo();

function bar() 
{
  echo "I exist immediately upon program start.\n";
}

?>

ব্যাখ্যা: আপনি যদি $makefoo variable এর value false করে দেন, তাহলে foo() function declare এবং call কোনোটিই হবে না।

PHP তে Recursive Function কি ?

Recursive Function

function যখন নিজেই নিজেকে কল করে বা যখন function নিজের মধ্যেই নিজেকে কল করে , PHP অথবা যেকোনো Programming Language এর পরিভাষায় একে বলা হয় Recursive Function বা Recursion. নিচের উদাহরণ দেখুন

:

<?php
function recursion($a)
{
    if ($a <=10) {
        echo "$a\n";
        recursion($a + 1);
    }
}
recursion(5);  //Result: 5,6,7,8,9,10
?>

ব্যাখ্যা : লক্ষ্য করুন recursion function টি একটি condition true না হওয়া পর্যন্ত নিজেই নিজেকে কল করছে।

Note: তবে recursive function সব সময় একটা condition এর মধ্যে আটকানো থাকতে হয়, অন্যথা function টি infinite বা অন্যন্ত সময় পর্যন্ত run করতে থাকবে, এবং compile error দেখাবে।

চলুন এবার একটা recursive function তৈরী করি যেটা আমাদেরকে একটা পূর্ণাঙ্গ সংখ্যার factorial বের করে দিবে।
একটি সংখ্যার ফ্যাক্টরিয়াল(factorial) হলো সংখ্যাটির সমান বা তার থেকে ছোটো সকল ধণাত্মক পূর্ণসংখ্যার গূণফল, n এর ফ্যাক্টরিয়ালকে “n!” দ্বারা প্রকাশ করা হয়, যেমন- n!=n*(n-1)*(n-2)*(n-3)….1*2*3

উদাহরণস্বরূপ:5!=5*4*3*2*1=120

<?php
// recursive function
// to calculate factorial
function calcFactorial($num) {
    // define variable to hold product
    static $product = 1;
    // recurse until $num becomes 1
    if ($num > 1) {
        $product = $product * $num;
        $num--;
        calcFactorial($num);
    }
return $product;
}
// result: "Factorial of 5 is 120"
echo "Factorial of 5 is " . calcFactorial(5);
?>

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

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 *