Сервисы

Сущность фреймворка, по умолчанию по структуре и потребляемым ресурсам, легче страницы и контроллера.

  • Сервис предназначен для выполнения синхронных фоновых задач. Всё тоже самое можно конечно же реализовать в контроллере и странице.
  • не требует подключения к БД и не имеет записи в БД
  • минимально состоит из 1 файла
  • не имеет какой бы то либо структуры по сравнению с контроллером
  • формат взаимодействия с сервисом, разработчик выбирает сам.

Примеры использования сервиса

  • Динамически генерировать sitemap.xml, например если не используется cron-скрипт для генерации статичного файла.
  • сервис может выдавать картинку для CAPTCHA
  • Сервис может выполнять фоновые операции от страницы, взаимодействовать по AJAX.
  • Экспортировать RSS.
  • Импортировать данные из чего угодно.

Сервисы предназначены для выполнения вспомогательных задач: выполнение фоновых задач, выполнение AJAX-команд, экспорт/импорт. У сервиса нет фиксированной структуры, что даёт свободу разработчику. Сервисы не имеют записи в БД.

 

Пример

<?

$ext_id = get_int('id');

$ext_action = get_str('action');

$response = [];

// Название действия.
$response['action'] = $ext_action;

// Признак ошибки.
$response['error'] = false;

// Сообщение.
$response['message'] = '';

// HTML данные.
$response['html'] = '';

// Любые данные, которые могут быть обработаны в JavaScript.
$response['records'] = [];
$response['date'] = date('m.d.Y');
$response['any_key'] = 'Любое значение.';


switch( $ext_action ){

	case 'save':

		...

		if( $ext_id == 0 ){

			$response['error'] = true;
			$response['message'] = 'Ошибка. Вы не указали код записи.';

		}

		...

		break;

	case 'new':

		...

		break;

	case 'remove':

		...

		break;

	case 'view':

		...

		$response['html'] = app::$tpl->fetch('news/view.tpl');

		$sql = 'SELECT * FROM comments';

		$records = app::$db->selrow();

		if( is_array( $records ) == true ){

			$response['records'] = $records;

		}

		...

		break;

	default:

		...

		$response['html'] = app::$tpl->fetch('news/list.tpl');

		...

		break;

}

echo json( $response );

?>
© Автор и разработчик Михаил Шершнёв, 2006–2021
E-mail: support@bwframework.ru