当前位置: 首页 > 知识库问答 >
问题:

如何在Symfony 4中使用简单函数?

周昊乾
2023-03-14

我想在Symfony 4中使用一个简单的函数,如下所示:

SRC/Service/Utils.php

<?php

namespace App\Service;

/**
 * @param string $attr
 *
 * @return bool
 */
function attributNilTrue($attr): bool
{
    return json_encode($attr) === '{"@attributes":{"nil":"true"}}';
}

一些/其他/file.php

use function App\Service\attributNilTrue;

if (attributNilTrue($foo['bar'])) {
    // Do something...
}

但我得到以下错误:

自动加载程序需要在文件“/var/www/interop/vendor/composer/./../src/Service/Utils.php”中定义类“App\Service\Utils”。找到了文件,但类不在其中,类名或命名空间可能有输入错误。

有没有一种不用创建Utils类就可以做到这一点的方法?

共有2个答案

元鸿波
2023-03-14

我建议在类中包装这样的函数-例如:

namespace App\Service;

class Utils
{
    /**
     * @param string $attr
     *
     * @return bool
     */
    public static function attributNilTrue($attr): bool
    {
        return \json_encode($attr) === '{"@attributes":{"nil":"true"}}';
    }
}

如果已为该目录配置自动加载,则应自动加载该目录-否则,请添加如下服务定义:

App\Service\Utils:

然后你可以像这样使用它:

use App\Service\Utils;

...

if (Utils::attributNilTrue($foo['bar'])) {
    // Do something...
}

这种方式:

>

  • 根据PSR4(https://www.php-fig.org/psr/psr-4/)正确定义类:

    2.3.3:
    The terminating class name corresponds to a file name ending in .php. The file name MUST match the case of the terminating class name.
    

    你不必和作曲家闹别扭。

  • 林曦之
    2023-03-14

    您可以使用autoloader文件键输入合成器。

    在您的编写器中。json文件包括如下内容:

    {
        "autoload": {
            "files": ["src/utility_functions.php"]
        }
    }
    

    (其中src/utility_functions.php是包含函数定义的文件)。

    转储您的自动加载器(composer Dump autoload),以便将其合并到您的自动加载器文件中,并且您在该文件中定义的任何功能都将在每次请求时可用。

    典型的Sf4将已经包含一个PSR4条目,因此您必须添加自己的条目。最终结果或多或少会是这样的:

    "autoload": {
        "psr-4": {
          "App\\": "src/"
        },
        "files": [
          "src/utility_functions.php"
        ]
      },
    

     类似资料:
    • 问题内容: 我怎么用 代替 ? 有可能导入包裹吗? 同一包中有很多类,我想使XML文件更具可读性。 问题答案: 看起来,您 不能 使用简单的类名来代替完全限定的类名,(Spring文档本身),除非您的bean 仅充当子bean的父级。 但是,如果使用批注而不是XML描述符文件,则可以使用简单的类名,并允许import语句处理包名限定符的混乱情况。

    • 我目前正在阅读React官方网站,在那里我遇到了这个问题。React官方网站声明我们可以在JSX中使用函数代码。因此,我尝试了以下代码,但不起作用。 ABCD类扩展了React。组件{ } 我知道,我知道,你们中的一些人可能会说,看看React网站上给出的例子。我看到了,官网上的例子涉及到外部功能。我只是想知道我们能否独立使用JSX内部的函数。 有关更多信息,请参阅此链接:https://reac

    • 本文向大家介绍python中count函数简单用法,包括了python中count函数简单用法的使用技巧和注意事项,需要的朋友参考一下 python中count函数的用法 Python count()方法 描述 Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。 count()方法语法: 参数 sub -- 搜索的子字符串 start -

    • 本文向大家介绍python中的turtle库函数简单使用教程,包括了python中的turtle库函数简单使用教程的使用技巧和注意事项,需要的朋友参考一下 具体内容如下所示: 参考案例: 总结 以上所述是小编给大家介绍的python中的turtle库函数简单使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持! 如果你觉得本文对你

    • 问题内容: 我一直听到人们在谈论依赖注入及其带来的好处,但是我并不真正了解它。 我想知道这是否是“我一直将数据库连接作为参数传递”的解决方案。 我尝试阅读有关Wikipedia的条目,但是该示例是用Java编写的,因此我不太了解它试图阐明的区别。(http://en.wikipedia.org/wiki/Dependency_injection)。 我读了这篇php-dependency-inje

    • 问题内容: 我正在用Java执行一个项目,该项目具有在数据库中添加文件的功能,并且我想使用winapi函数来选择文件。我该怎么办? 问题答案: 到目前为止,最简单的方法是使用Java JNA,它已经具有stcalls的翻译功能。 您可以在JavaWorld上找到它的基础教程(至少有Winapi示例)。 您也可以使用JNI,但是JNI要求您使用专门构建的头文件进行接口连接,而这一切都很难维护和使用。