我编写了将生日日期转换为年龄的那些代码行。
我将在许多 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/