想象一下,我有 2 个控制器,UserController 和 PostController,但是,我想使用一个通用的函数,并且在主题上不属于这些类中的任何一个。就像是:
public function sum($numberOne, $numberTwo) {
return $numberOne + $numberTwo;
}
我应该在哪里创建它以便能够在 UserController 和 PostController 中使用它?我经常读到从另一个控制器调用控制器方法是一种不好的做法,但我无法弄清楚有什么替代方法。
我可以在每个控制器中创建函数,但随后我会重复自己,并且代码不容易维护。
在这些情况下,我在 App 文件夹中创建了一个 Helpers 文件夹。然后命名助手。IE:
日期帮手 App\Helpers\Dates.php
namespace App\Helpers;
/**
* collection of methods for working with dates.
*/
class Date
{
/**
* get the difference between 2 dates
*
* @param date $from start date
* @param date $to end date
* @param string $type the type of difference to return
* @return string or array, if type is set then a string is returned otherwise an array is returned
*/
public static function difference($from, $to, $type = null)
{
$d1 = new \DateTime($from);
$d2 = new \DateTime($to);
$diff = $d2->diff($d1);
if ($type == null) {
//return array
return $diff;
} else {
return $diff->$type;
}
}
}
然后在任何类中导入命名空间:
use App\Helpers\Dates;
然后调用类
Dates::difference($from, $to);
这样我就可以根据helper
需要创建尽可能多的类,如果我一遍又一遍地重用相同的类,那么为它们创建一个包是有意义的,以便它们可以在多个项目中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句