「Fatal error: Cannot redeclare var_dump() in /var/www/html/Test/test.php on line 10」というerrorは、書かれているコードのline10に問題があるということを教えてくれています。
Fatal error: Cannot redeclareを翻訳すると「致命的エラー:再度宣言することができません」となります。
それを踏まえてもう一度テストコードとエラーコードを見直ししてみて下さい。
var_dump()という名前の関数は、PHPで既に用意されている関数ですが、同じ名前の関数を自分で作ろうとしているため、再度宣言することはできないよ、と言われています。
本来はこのような同じ名前の関数は混乱のもとなので使用すべきではないのですが、
もしどうしてもこの形でエラーを回避したいのであれば、PHP5.3から使用できるようになった**「namespace」**を使用することもできます。
namespaceを利用することで、関数同士の衝突エラーを防ぐことが可能です。
namespaceを利用したコードは
`
<?php
// Test/test.php
namespace Test;
function var_dump($input){
$input=empty($input)?'empty':$input;
echo('It is private var_dump!! your input is '.$input);
}
// execute as Test\var_dump();
var_dump('test');
`
namespaceでTestを設定することにより、functionはnamespaceの中に設定されたvar_dumpとして動作するため
It is private var_dump!! your input is test
と、しっかり動いてくれるようになります。
加えて、var_dump()の出力制限についてです。
**そもそもvar_dump()には返り値がないので、出力した関数をそのまま利用できません。**
ですので、いっそのこと変数に格納するのも1つの手と言えます。
【例】
`
<?php
function get_str_var_dump($foo) {
// 出力バッファリング開始
ob_start();
var_dump($foo);
// バッファの内容を変数へ格納
$bar = ob_get_contents();
// 出力バッファを消去してバッファリング終了
ob_end_clean();
return $bar;
}
$a = array('Hello!','See you!');
echo sprintf("$a:[%s]\n", get_str_var_dump($a) );
?>
`
【結果】
$a:[array(2) { [0]=> string(6) "Hello!" [1]=> string(8) "See you!" } ]
変数に格納することで、ある程度扱いやすくなります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。