Newer
Older
flow-task / server / libs / DataContain.php
<?php

namespace libs;

trait DataContain {
	protected Array $data = [];
	protected Array $data_fields = [];

	protected function set_fields(Array $fields) {
		$this -> data_fields = $fields;
	}

	public function __get(String $field_name) {
		if(!isset($this -> data[$field_name])) {
			throw new \Exception("Field `{$field_name}` in User object not found");
		}

		return $this -> data[$field_name];
	}

	public function __set(String $field_name, $field_value) {
		if(!in_array($field_name, $this -> data_fields)) {
			throw new \Exception("Field `{$field_name}` not provided in User object");
		}

		$this -> data[$field_name] = $field_value;

		if(property_exists($this, "changed_fields") and is_array($this -> changed_fields)) {
			$this -> changed_fields[] = $field_name;
		}
	}
}