3

I'm trying to provide a member variable as a default value for a class method.

I know it's impossible to use a variable as a default value for a non-class function, but it seems like there should be a way to do this within a class.

There must be a way to do it - perhaps I just have the wrong syntax:

class test{
  private $test = '';

  __construct(){
    $this->test = "whatever";
  }

  function getTest($var = $this->test){
    echo $var;
  }
}

but this throws an error saying something like:

$this->test as a function argument default value is not allowed. unexpected T_VARIABLE.

Any thoughts?

2 Answers 2

10

From the manual:-

The default value must be a constant expression, not (for example) a variable, a class member or a function call.

I'd probably just do something like:-

<?php

class Test {

    public function __construct() {

        $this->test = "whatever";

    }

    public function getTest($var=NULL) {

        if (is_null($var)) {
            $var = $this->test;
        }

        echo $var;
    }
}
?>
Sign up to request clarification or add additional context in comments.

Comments

3

I believe you can only use constants (strings, numbers, etc) in that syntax (but I could be wrong about that).

I suggest this alternative:

function getTest($var = null) {
    if (is_null($var)) {
        $var = $this->test;
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.