我可以在symfony2中创建像codeigniter一样的辅助函数吗?
我想要一个能在pre标签内打印数组的函数,如
public function print_in_pre_tag($array) {
echo "<pre>";
print_r($array);
echo "</pre>";
}
我经常以该格式打印数组以检查值。
请提出一些解决方案并告诉我在哪里可以保留此功能?
编辑1:如果我调用print_in_pre_tag($ array);在任何控制器内 上面的函数应该调用。
答案 0 :(得分:8)
您应该为此创建一个服务(codeIgniter中的帮助程序)。
在捆绑包中创建名为Services的文件夹。在该文件夹中创建一个名为“PrintManager.php”的文件(或者你想要调用它 - 但要确保第一个是大写)
然后在PrintManager.php中放入:
命名空间Company \ MyBundle \ Services;
类PrintManager {
public function print_in_pre_tag($array) { echo "<pre>"; print_r($array); echo "</pre>"; } }
然后在您的services.yml中设置文件:
参数: print_manager.class:Company \ MyBundle \ Services \ PrintManager(通知,没有.php扩展名)
服务: print_manager: class:“%print_manager.class%”
然后在您的控制器中,您可以这样称呼它:
$ printManager = $ this-&gt; get('print_manager');
$ printManager-&GT; print_in_pre_tag($阵列);
顺便说一句,你能做的最好的事情就是让你的服务处理功能部分,让它将结果返回给你的控制器,然后从那里开始处理结果。
喜欢:$ text = $ printManager-&gt; print_in_pre_tag($ array);
答案 1 :(得分:1)
实际上,我不明白为什么人们推荐服务。 服务必须包含业务逻辑。 对于你的任务使用助手。它们是静态的,你不需要实例!
答案 2 :(得分:0)
你应该使用你想要的LadybugBundle。它可以更容易使用,因为您可以使用以下调用进行调试:
ld($array);
ldd($array);
此外,您的PHP代码中的helpers可用任何地方,而无需请求或定义服务。最后它还可以在控制台,Ajax调用,Twig模板中进行调试......
答案 3 :(得分:0)
实际上,这个问题太老了,无法回答,实际上我的回答不是关于助手,而是关于你需要的功能。你需要一个漂亮的var_dump()。
来自Symfony 2.6,我们有VarDumper组件。当然,您可以随时随地在PHP代码中随时随地使用它。
您必须使用 dump()功能。您可以在开发人员栏中以及重定向页面中查看转储。转储的输出,它更好地格式化,因为你有箭头来扩展所有内部数组。
只是为了让你知道伙伴们