php

How to make a reference parameter optional?


Say I've defined a function in PHP, and the last parameter is passed by reference. Is there any way I can make that optional? How can I tell if it's set?

I've never worked with pass-by-reference in PHP, so there may be a goofy mistake below, but here's an example:

$foo;
function bar($var1,&$reference)
{
    if(isset($reference)) do_stuff();
    else return FALSE;
}

bar("variable");//reference is not set
bar("variable",$foo);//reference is set

Solution

  • Taken from PHP official manual:

    NULL can be used as default value, but it can not be passed from outside

    <?php
    
    function foo(&$a = NULL) {
        if ($a === NULL) {
            echo "NULL\n";
        } else {
            echo "$a\n";
        }
    }
    
    foo(); // "NULL"
    
    foo($uninitialized_var); // "NULL"
    
    $var = "hello world";
    foo($var); // "hello world"
    
    foo(5); // Produces an error
    
    foo(NULL); // Produces an error
    
    ?>