A super easy PHP Framework for web development! https://github.com/exacti/phacil-framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
2.1 KiB

<?php
/**
* Copyright © 2023 ExacTI Technology Solutions. All rights reserved.
* GPLv3 General License.
* https://exacti.com.br
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
*/
namespace Phacil\Framework\Databases\Object;
use ArrayObject;
use Phacil\Framework\Databases\Object\ItemInterface as ObjectInterface;
/**
* {@inheritdoc}
* @method mixed getValue(string $field)
* @method mixed getValues(string field, ...)
* @package Phacil\Framework\Databases\Object
*/
class Item extends \ArrayObject implements ObjectInterface {
/**
*
* @var array|null
*/
protected $__data = null;
/**
*
* @param mixed $data
* @return $this
*/
function __construct($data = null) {
$this->__data = $data;
parent::__construct($data);
return $this;
}
/**
*
* @param array $data
* @return $this
*/
public function setData(array $data) {
$this->__data = $data;
return $this;
}
/**
* @param string $key
* @return mixed
*/
private function _getValue($key){
return isset($this->__data[$key]) ? $this->__data[$key] : null;
}
public function __get($key){
return isset($this->__data[$key]) ? $this->__data[$key] : null;
}
/**
*
* @param string $key
* @param mixed $value
* @return $this
*/
public function setValue($key, $value){
$this->__data[$key] = $value;
return $this;
}
/**
*
* @param string $method
* @param string[] $args
* @return mixed
*/
public function __call($method, $args) {
if(($p = strpos($method, 'get')) !== false && $p === 0){
$fieldname = (str_replace('get', '', $method));
if(!empty($args)){
switch ($fieldname) {
case 'Values':
case 'Value':
if(count($args) === 1)
return $this->_getValue($args[0]);
$values = [];
foreach($args as $arg){
$values[$arg] = $this->_getValue($arg);
}
return $values;
break;
default:
# code...
break;
}
}
//Convert data to insensitive case
$lower_array_object = new \Phacil\Framework\ArrayClass\CaseInsensitiveArray(
$this->__data
);
return $lower_array_object[$fieldname];
}
}
}