如何在symfony2中创建自定义或辅助函数,如codeigniter?我应该留在哪里?

时间:2013-02-20 10:59:19

标签: symfony

我可以在symfony2中创建像codeigniter一样的辅助函数吗?

我想要一个能在pre标签内打印数组的函数,如

public function print_in_pre_tag($array) {
    echo "<pre>";
    print_r($array);
    echo "</pre>";    
}

我经常以该格式打印数组以检查值。

请提出一些解决方案并告诉我在哪里可以保留此功能?

编辑1:如果我调用print_in_pre_tag($ array);在任何控制器内 上面的函数应该调用。

4 个答案:

答案 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()功能。您可以在开发人员栏中以及重定向页面中查看转储。转储的输出,它更好地格式化,因为你有箭头来扩展所有内部数组。

只是为了让你知道伙伴们