68 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types = 1);
 | |
| /**
 | |
|  * Abstract data transfer object.
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @implements ArrayAccess<string,mixed>
 | |
|  */
 | |
| #[AllowDynamicProperties]
 | |
| abstract class QM_Data implements \ArrayAccess {
 | |
| 	/**
 | |
| 	 * @var array<string, mixed>
 | |
| 	 */
 | |
| 	public $types = array();
 | |
| 
 | |
| 	/**
 | |
| 	 * @var array<string, array<string, mixed>>
 | |
| 	 * @phpstan-var array<string, array{
 | |
| 	 *   component: string,
 | |
| 	 *   ltime: float,
 | |
| 	 *   types: array<array-key, int>,
 | |
| 	 * }>
 | |
| 	 */
 | |
| 	public $component_times = array();
 | |
| 
 | |
| 	/**
 | |
| 	 * @param mixed $offset
 | |
| 	 * @param mixed $value
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	#[ReturnTypeWillChange]
 | |
| 	final public function offsetSet( $offset, $value ) {
 | |
| 		if ( is_string( $offset ) ) {
 | |
| 			$this->$offset = $value;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param mixed $offset
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	#[ReturnTypeWillChange]
 | |
| 	final public function offsetExists( $offset ) {
 | |
| 		return is_string( $offset ) && isset( $this->$offset );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param mixed $offset
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	#[ReturnTypeWillChange]
 | |
| 	final public function offsetUnset( $offset ) {
 | |
| 		// @TODO might be able to no-op this
 | |
| 		if ( is_string( $offset ) ) {
 | |
| 			unset( $this->$offset );
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param mixed $offset
 | |
| 	 * @return mixed
 | |
| 	 */
 | |
| 	#[ReturnTypeWillChange]
 | |
| 	final public function offsetGet( $offset ) {
 | |
| 		return ( is_string( $offset ) && isset( $this->$offset ) ) ? $this->$offset : null;
 | |
| 	}
 | |
| }
 |