0

渡されるか事前に設定されているかに関係なく、設定されているパラメーターの値を取得する方法を探しています。使ってみfunc_get_params()ました。これは渡された値を返しますが、値が事前に設定されているかどうかは表示されません。

public function __construct($host = 'null', $user = null, $password = null, $database = null){
var_dump(func_get_args());
die();
    $this->mysqli = new mysqli($host, $user, $password, $database);

    if ($this->mysqli->connect_errno) {
        echo("Connection failed: ". $mysqli->connect_error);
        exit();
    }
}

値が渡されない場合、null ではなく、空の配列出力を取得します。これは、 を文字列に変換した場合にも発生nullsします。

func_get_argsまた、事前設定された値を返す代替手段はありますか?

4

1 に答える 1

1

非常に冗長ですが、名前付きパラメーターまたはより楽しい作業の理由がわかります。

<?php
class Foo {
     function __construct($host = 'null', $user = null, $password = null, $database = null){
        //getParameters 
        $ref = new ReflectionMethod(__CLASS__,__FUNCTION__);
        $args = array();
        foreach($ref->getParameters() as $param){
                $args[] = $param->getDefaultValue();
        }
        foreach(func_get_args() as $key => $arg){
           $args[$key] = $arg;
        }
        var_dump($args);
     }
}
new Foo();
/*
array(4) {
  [0]=>
  string(4) "null"
  [1]=>
  NULL
  [2]=>
  NULL
  [3]=>
  NULL
}
*/
new Foo('foo','bar');
/*
array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  NULL
  [3]=>
  NULL
}
*/
于 2012-06-28T21:36:02.443 に答える