Dhi*_*bbi 0 php namespaces declaration function symfony
我编写了将生日日期转换为年龄的那些代码行。
我将在许多控制器和许多路由功能中使用此代码!所以我决定把它放在一个函数中,然后调用calculate_age()
.
我的问题是我怎么可以声明函数或任何功能 一旦里面的namespace App\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;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,因为它是一个计算年龄的函数,所以你会有一个 Person 模型并将这个函数放在那里,然后你会在你的人员控制器上调用它,它会是这样的(这是一个通用代码,好吗?):
$age = $this->Person->calculate_age($birthday);
另一种选择(但我不推荐)是在主模型中使用此函数,因此可以从所有继承自它的类模型访问它。
或者(但也不推荐用于这种情况),您可以拥有一个通用的静态服务类,以便您可以放置更通用且不属于特定模型的函数,某种帮助程序,然后您可以这样做:
$age = YourHelperClass::calculate_age($birthday);
如果您不知道模型是如何工作的,我建议您搜索 MVC,但基本上,模型将包含与您的应用程序逻辑相关的所有方法,而控制器应该只控制逻辑的流程。模型应该很厚,控制器应该很薄。