Как-то давно затеял возню с php'шным фреймворком. Когда только начинал его пилить, то сразу понял, что пилить его имеет смысл, только если он будет давать реальный профит в разработке по сравнению с традиционными фреймворками (Zend/Yii/Laravel). За счёт чего может быть достигнуто преимущество? Как вариант научить его решать узкий класс задач. Т.е. довести решение этого класса задач до абсолюта, недоступного перечисленным выше фреймворкам.

Что же за задачу взять?

Рассуждал я здраво - что чаще всего делается при создании программного продукта? Очень много времени занимает добавление новой сущности и написание сопутствующего кода. Опять таки микросервисная архитектура набирала тогда популярность. И было решено заточить фреймворк под это дело. В результате нескольких месяцев разработки родилось нечто, что позволяло бы декларативно определять поведение создаваемого микросервиса. Например:

<?php

	require_once( './vendor/crud-service/crud-service.php' );

	class MicroService extends CRUDService
	{
		/**
		*	Constructor.
		*/
		public function __construct()
		{
			$Fields = array(
				'id' => array( 'type' => 'integer' , 'title' => 'id' ) , 
				'title' => array( 'type' => 'string', 'title' => 'Название' ) , 
				'genre' => array( 'type' => 'string' , 'title' => 'Жанры' ) , 
				'selection_criteria' => array( 'type' => 'string', 'title' => 'Критерии отбора' , 'editor' => 'textarea' ) , 
				'prize_type' => array( 
					'type' => 'integer' , 'title' => 'Тип' , 
					'items' => array(
						0 => 'Денежный приз' , 
						1 => 'Другое' , 
					)
				) , 
				'currency' => array( 
					'type' => 'integer', 'title' => 'Валюта' , 
					'items' => array(
						0 => 'Руб. (Р)' , 
						1 => 'USD ($)' , 
					)
				) 
			);

			parent::__construct( 'contest_nomination' , $Fields , 'contest-nomination' );
		}
	}

    // run service
    $Service = new MicroService();
    $Service->run();

?>

Вот такой вот простенький класс микросервиса, соответствующий номинации конкурса. Из полей тут можно найти название, описание, а так же описание приза. Как видно в полях указывается тип данных. При необходимости можно указать возможные значения, которые моет принимать поле.

Скачать исходники можно на Гитхабе.

Добавить комментарий


Защитный код
Обновить