У меня есть отдельные функции validate_date в controller1.php, controller2.php и controller3.php. Я хочу создать глобальную функцию в DateTimeHelper.php для проверки дат вместо создания функции в каждом контроллере для этой функции. Я использую Laravel в бэкэнде
Controller1:
private function validate_date($date)
{
$split_date = explode('/', $date);
if (count($split_date) == 3) {
return checkdate($split_date [0], $split_date [1], $split_date [2]);
}
return false;
}
Controller2 && контроллер 3:
private function validate_date($date)
{
if ($this->check_field($date) && $date !== 'Invalid date') {
return true;
}
return false;
}
Моя проблема в том, что я использую разные функции в разных контроллерах, мне нужна глобальная функция для проверки дат вместо создания функции в каждом контроллере для этой функции.
Следующий метод, вероятно, сделает то, что вы ищете:
Создайте новый файл с именем DateTimeHelper.php
внутри (новой) папки помощников. Окончательный путь будет app \ Helpers \ DateTimeHelper.php.
Содержимое DateTimeHelper.php будет выглядеть так:
<?php
namespace App\Helpers;
class DateTimeHelper {
public function validate()
{
}
public function checkField()
{
}
}
Теперь отредактируйте контроллеры, где вы хотите использовать класс, добавьте защищенное свойство $ dateTimeHelper и используйте Laravel’s Автоматический впрыск как это:
<?php
namespace App\Http\Controllers;
use App\Helpers\DateTimeHelper;
class UserController extends Controller
{
protected $dateTimeHelper;
/**
* Create a new controller instance.
*
* @param DateTimeHelper $dateTimeHelper
* @return void
*/
public function __construct(DateTimeHelper $dateTimeHelper)
{
$this->dateTimeHelper = $dateTimeHelper;
}
public function show($date)
{
return $this->dateTimeHelper->validate($date);
}
}
Надеюсь, это должно решить проблему, однако, я бы рекомендовал изучить Проверка Laravel.
Как насчет класса обслуживания вместо вспомогательной функции и размещения всех возможных проверок даты из системы в этом классе обслуживания?