我正在寫一個API在Symfony 3中,我想使用Symfony VarDumper dump()函數。然而,dump()正在輸出HTML,這在我的情況下非常煩人。 (我的客戶端調用API不會呈現HTML)強制轉儲()-VarDumper輸出文本
我寧願輸出爲純文本,JSON,Yaml或至少是在CLI模式下由dump()使用的輸出。
什麼是一個很好的方法來做到這一點?
我正在寫一個API在Symfony 3中,我想使用Symfony VarDumper dump()函數。然而,dump()正在輸出HTML,這在我的情況下非常煩人。 (我的客戶端調用API不會呈現HTML)強制轉儲()-VarDumper輸出文本
我寧願輸出爲純文本,JSON,Yaml或至少是在CLI模式下由dump()使用的輸出。
什麼是一個很好的方法來做到這一點?
我可以使用下面的代碼做這個
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\VarDumper;
//................
CliDumper::$defaultOutput = 'php://output';
VarDumper::setHandler(function ($var) {
$cloner = new VarCloner();
$dumper = new CliDumper();
$dumper->dump($cloner->cloneVar($var));
});
dump($debugMe);
我還可以提到可以獲取轉儲()輸出到文本/ CLI格式而不是HTML,我會鼓勵使用的print_r的()for var_dump()在Symfony應用程序中進行調試時,通常輸出會更混亂和混亂,並且出於某種原因,print_r()在某些場合甚至無法使用。
比方說,你已經呈現在你的控制器到樹枝文件像這樣:
return $this->render('admin/maintain_divisions.html.twig', array(
'form' => $form->createView(),
'var' => $variable,
));
哪裏var
是varaible;然後在你將使用的樹枝文件中:
{{ dump(var) }}
該變量可以是任何東西,甚至是一個學說結果集。
在一個控制器,你可以使用:
var_dump($variable);
這是一個PHP函數。
感謝您的建議。之前我使用的是「raulfraile/ladybug-bundle」ldd()函數(配置爲輸出文本,而不是HTML),輸出更容易讀取var_dump(),在某些情況下,var_dump()輸出幾乎不可讀。 print_r()似乎打到無限循環或者什麼東西,執行永遠不會完成。我正在切換到VarDumper,因爲瓢蟲似乎不再受到支持,目前它與作曲家的依賴性相沖突。 目前我沒有在這個應用程序的任何地方使用樹枝,但是感謝您指出{{dump()}} – Sam
是的,您是正確的山姆,您應該爲數組使用'print_f()'。我忘了那個。如果它循環,肯定有什麼不對。我強烈建議使用TWIG文件(在DEV環境中僅**)來轉儲。如果它是一個數組,您將在TWIG中轉儲時看到所有細節。如果你認爲我的幫助,你應該爲我的答案做'upvote'。謝謝! –
這是一個詭計問題嗎?使用json串行器功能來輸出json。 – Cerad
當我正在開發或調試時,有時候會有一個變量,並且此變量可能是任何類型的值或對象。我喜歡能夠快速使用dump()獲得有關變量和對象類型的想法等。我可能會在ArrayCollections,表單類型,服務等上使用dump()。 也許您錯過了解我的意圖? 你是否建議我使用json_encode()? Surly這將無法輸出複雜的嵌套對象進行調試,包括公開對象的私有屬性? – Sam
確實,我以爲你想用自卸車作爲你的api的一部分。我在控制檯命令以及phpunit測試中使用了它,並且我得到了可讀的輸出。而不是使用包裝器轉儲功能,你可以嘗試VarDumper :: dump(),看看會發生什麼。 – Cerad