php - 如何在命名空间 App\Controller 中声明一个新函数?

标签 php function symfony namespaces declaration

我编写了将生日日期转换为年龄的那些代码行。
我将在许多 Controller 和许多路由功能中使用此代码!
所以我决定把它放在一个函数中并调用 calculate_age() .
我的问题是如何声明该函数或任何函数 一次 namespace App\Controller; ?所以我可以在所有 Controller 中使用它。
功能代码:

public function calculate_age($birthday): ?int
{
    $current_date = date('d-m-Y', time());
    $info         = explode(' ', $birthday);
    $months       = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    $numbers      = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
    $i            = 0;
    for ($i = 0; $i <= 11; ++$i) {
        if ($info[2] == $months[$i]) {
            $info[2] = $numbers[$i];
        }
    }
    $all = $info[1].'-'.$info[2].'-'.$info[3];

    $difference = date_diff(date_create($current_date), date_create($all));
    $age        = \intval($difference->format('%y'));

    return $age;
}

最佳答案

理想情况下,因为它是一个计算年龄的函数,所以你会有一个 Person 模型并将这个函数放在那里,然后你会在你的人员 Controller 上调用它,它会是这样的(这是一个通用代码,好吗?):
$age = $this->Person->calculate_age($birthday);
另一种选择(但我不推荐)是在主模型中使用此函数,因此可以从所有继承自它的类模型访问它。

或者(但也不推荐用于这种情况),您可以拥有一个通用的静态服务类,这样您就可以放置更通用且不属于特定模型的函数,某种帮助程序,然后您可以这样做:
$age = YourHelperClass::calculate_age($birthday);
如果您不知道模型是如何工作的,我建议您搜索 MVC,但基本上,模型将包含与您的应用程序逻辑相关的所有方法,而 Controller 应该只控制逻辑的流程。
模型应该很厚, Controller 应该很薄。

关于php - 如何在命名空间 App\Controller 中声明一个新函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61967859/

相关文章:

php - 一种无需编辑 php.ini 即可生成自定义 session ID 的方法

Laravel 和 VueJS : Calling a VueJS Method Inside Blade

Windows 批处理函数从参数中删除特殊字符

C++ 更新函数参数

symfony - 在 Symfony2 中使用 OAuth2 client_credentials 进行身份验证

php - Cron 作业不运行 php 代码

php - 在开始比较之前如何在同一页面上获取刷新的数据库?

javascript - 如何通过Symfony Form(使用JS、AJAX)操作数据?

php - Laravel 5 - 验证 Mime 类型

Symfony2, Controller 中的一个 Action 是否可以有两条路线?