← Back to PHP Course | Chapter 5: Functions | Lesson 4 of 10

PHP Default Arguments

एक default argument वह backup choice है जो तब इस्तेमाल होती है जब आप कुछ और नहीं कहते, किसी ऐसे pizza जैसा जो cheese के साथ आता है जब तक आप कुछ और न माँगें। यह callers को एक blank छोड़ने देता है।
Syntax
php
function function_name($required, $optional = default_value) {
    // body
}

function_name($a);       // uses the default
function_name($a, $b);   // overrides it

Default Arguments क्या हैं?

किसी parameter की definition में सीधे एक value assign करना (function greet($name = Guest)) उस argument को call site पर optional बना देता है — अगर caller एक supply नहीं करता, PHP चुपचाप एक missing argument के बारे में error raise करने के बजाय default पर fall back हो जाता है।

उदाहरण: What are Default Arguments?

php
<?php
// Define the function `greet` taking `$name`
function greet($name = 'Guest') {
    // Print "Hello, $name!" to the output
    echo "Hello, $name!";
}
// Call `greet()`
greet();
?>

Default Arguments रखना

PHP को चाहिए कि default value वाला हर parameter बिना default value वाले हर parameter *के बाद* आए। किसी required parameter से पहले एक optional parameter रखना एक ऐसा ordering बनाता है जिसे PHP unambiguously resolve नहीं कर सकता, और यह function definition को parse करने से पूरी तरह मना कर देगा।

उदाहरण: Placing Default Arguments

php
<?php
// Define the function `greet` taking `$name`, `$greeting`
function greet($name, $greeting = "Hello") {
    // Print "$greeting, $name!" to the output
    echo "$greeting, $name!";
}
// Call `greet("Alice")`
greet("Alice");
?>

Default Values को Override करना

function को normally call करना और बस एक value supply करना उस call के लिए उस parameter का default override कर देता है — defaults सिर्फ तभी apply होते हैं जब कोई argument genuinely omit किया जाए, कभी नहीं जब एक explicitly pass किया जाए, भले ही यह default से match करता हो।

उदाहरण: Overriding Default Values

php
<?php
// Define the function `greet` taking `$name`
function greet($name = 'Guest') {
    // Print "Hello, $name!" to the output
    echo "Hello, $name!";
}
// Call `greet("Alice")`
greet("Alice");
?>

Defaults के साथ Type Declarations

Type declarations और default values बिना किसी conflict के साथ काम करते हैं: PHP अभी भी caller द्वारा actually supply की गई किसी value का type validate करता है, जबकि default खुद उस check से exempt है (जब आपने इसे लिखा तब यह पहले से सही होने की तरह trusted है)।

उदाहरण: Type Declarations with Defaults

php
<?php
// Define the function `setVolume` taking `int $level`
function setVolume(int $level = 50) {
    // Print "Volume: $level" to the output
    echo "Volume: $level";
}
// Call `setVolume()`
setVolume();
?>

Null बनाम Default Argument

Explicitly null pass करना एक real argument माना जाता है, 'कुछ pass नहीं हुआ' नहीं — यह parameter की default value trigger *नहीं* करता।

अगर किसी parameter को genuinely null पर भी अपने default पर fall back होना चाहिए, यह function body के अंदर handle करना होगा, सिर्फ default-argument mechanism से नहीं।

उदाहरण: Null vs Default Argument

php
<?php
// Define the function `greet` taking `$name`
function greet($name = 'Guest') {
    // Declare `$name`, set to `$name ?? 'Guest'`
    $name = $name ?? 'Guest';
    // Print "Hello, $name!" to the output
    echo "Hello, $name!";
}
// Call `greet(null)`
greet(null);
?>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक default parameter को एक required वाले से पहले रखना, जैसे function f($a = 1, $b), जो PHP 8 में deprecated है।
  2. यह उम्मीद करना कि explicitly pass किया गया null default trigger करेगा, जबकि defaults सिर्फ तभी apply होते हैं जब argument omit किया गया हो।
  3. पुराने PHP versions में default की तरह एक non-constant expression इस्तेमाल करना, जबकि initializers में new सिर्फ PHP 8.1 से allowed है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.