1

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

我想要一个函数,它应该在 pre 标签内打印数组,比如

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

我经常以这种格式打印数组来检查值。

请提出一些解决方案,让我知道我可以在哪里保留该功能?

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

4

4 回答 4

8

您应该为此创建一个服务(codeIgniter 中的帮助程序)。

在您的包中创建一个名为 Services 的文件夹。在该文件夹中创建一个名为“PrintManager.php”的文件(或者您想调用它 - 但确保第一个是大写)

然后在 PrintManager.php 中输入:

命名空间公司\MyBundle\Services;

类打印管理器 {

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:类:“%print_manager.class%”

然后在您的控制器中,您可以像这样调用它:

$printManager = $this->get('print_manager');

$printManager->print_in_pre_tag($array);

顺便说一句,您可以做的最好的事情是让您的服务处理功能部分,并让它将结果返回给您的控制器,然后您可以从那里处理结果。

比如: $text = $printManager->print_in_pre_tag($array);

于 2013-02-20T11:59:04.957 回答
1

实际上,我不明白人们为什么推荐服务。服务必须包含业务逻辑。对于您的任务,请使用 Helpers。它们是静态的,您不需要实例!

于 2015-02-19T10:16:27.160 回答
0

您应该使用完全符合您要求的LadybugBundle 。它更容易使用,因为您可以使用以下调用进行调试:

ld($array);
ldd($array);

此外,这些助手可以在您的 PHP 代码中的任何地方使用,而无需请求或定义服务。最后,它还可以在控制台中调试、Ajax 调用、Twig 模板......

于 2014-01-15T10:49:52.823 回答
0

实际上,这个问题太老了,无法回答,实际上我的回答不是关于 Helper,而是关于您需要的功能。你需要一个漂亮的 var_dump()。

从 Symfony 2.6 开始,我们有了 VarDumper 组件。当然,您可以在任何需要的地方、任何时候、在您的 php 代码中使用它。

您必须使用函数dump()。您可以在开发人员栏中看到转储,也可以在重定向页面中看到。转储的输出格式更好,因为您有箭头来展开所有内部数组。

只是为了让大家知道

于 2016-09-12T09:45:15.653 回答