Bir T_VARIABLE olarak PHP varsayılan işlevi argüman?

2 Cevap php

Ben bir sınıf yöntemi için varsayılan değer olarak, bir üye değişkeni sağlamak için çalışıyorum.

Ben olmayan bir sınıf işlevi için varsayılan değer olarak bir değişken kullanmak imkansız olduğunu biliyorum, ama bir sınıf içinde bunu yapmak için bir yolu var olması gerektiği gibi görünüyor.

Bunu yapmanın bir yolu olmalı - belki de sadece yanlış sözdizimi vardır:

class test{
  private $test = '';

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

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

ama böyle bir şey söyleyerek bir hata atar:

$ This-> bir işlev değişkeni varsayılan değer olarak testi izin verilmez. beklenmedik T_VARIABLE.

Herhangi bir düşünce?

2 Cevap

Kimden manual: -

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

Muhtemelen gibi bir şey yapmak istiyorum: -

<?php

class Test {

    public function __construct() {

        $this->test = "whatever";

    }

    public function getTest($var=NULL) {

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

        echo $var;
    }
}
?>

Ben sadece (ama ben bu konuda yanlış olabilir) bu sözdizimi sabitleri (dizeleri, sayılar, vb) kullanabilirsiniz inanıyorum.

Ben bu alternatif öneriyoruz:

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