forked from mirzaev/minimal
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace mirzaev\minimal;
 | 
						|
 | 
						|
// Встроенные библиотеки
 | 
						|
use exception;
 | 
						|
 | 
						|
/**
 | 
						|
 * Модель
 | 
						|
 *
 | 
						|
 * @package mirzaev\minimal
 | 
						|
 * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
 | 
						|
 */
 | 
						|
class model
 | 
						|
{
 | 
						|
  /**
 | 
						|
   * Постфикс
 | 
						|
   */
 | 
						|
  public const POSTFIX = '_model';
 | 
						|
 | 
						|
  /**
 | 
						|
   * Конструктор
 | 
						|
   */
 | 
						|
  public function __construct()
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Записать свойство
 | 
						|
   *
 | 
						|
   * @param string $name Название
 | 
						|
   * @param mixed $value Содержимое
 | 
						|
   *
 | 
						|
   * @return void
 | 
						|
   */
 | 
						|
  public function __set(string $name, mixed $value = null): void
 | 
						|
  {
 | 
						|
    match ($name) {
 | 
						|
      default => throw new exception("Свойство \"\$$name\" не найдено", 404)
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Прочитать свойство
 | 
						|
   *
 | 
						|
   * @param string $name Название
 | 
						|
   *
 | 
						|
   * @return mixed Содержимое
 | 
						|
   */
 | 
						|
  public function __get(string $name): mixed
 | 
						|
  {
 | 
						|
    return match ($name) {
 | 
						|
      default => throw new exception("Свойство \"\$$name\" не обнаружено", 404)
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Проверить свойство на инициализированность
 | 
						|
   *
 | 
						|
   * @param string $name Название
 | 
						|
   *
 | 
						|
   * @return bool Инициализировано свойство?
 | 
						|
   */
 | 
						|
  public function __isset(string $name): bool
 | 
						|
  {
 | 
						|
    return match ($name) {
 | 
						|
      default => isset($this->{$name})
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Удалить свойство
 | 
						|
   *
 | 
						|
   * @param string $name Название
 | 
						|
   *
 | 
						|
   * @return void
 | 
						|
   */
 | 
						|
  public function __unset(string $name): void
 | 
						|
  {
 | 
						|
    match ($name) {
 | 
						|
      default => (function () use ($name) {
 | 
						|
        // Удаление
 | 
						|
        unset($this->{$name});
 | 
						|
      })()
 | 
						|
    };
 | 
						|
  }
 | 
						|
}
 |