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.

145 lines
2.4 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 Phacil\Framework\Databases\Object\ResultInterface;
2 years ago
use SplObjectStorage;
2 years ago
class Result implements ResultInterface {
/**
*
* @var array
*/
public $rows;
/**
*
* @var array
*/
public $row;
/**
*
* @var int
*/
public $num_rows;
2 years ago
/**
*
* @var \Phacil\Framework\Databases\Object\Item[]|\SplObjectStorage|\Iterator|null
*/
public $data = null;
/**
* {@inheritdoc}
* @return int<0, \max>
*/
public function count(): int {
return (int) $this->getNumRows();
}
/**
*
* {@inheritdoc}
*/
public function getData($numRow = false) {
return $numRow ? $this->getRow($numRow) : $this->getRows();
}
2 years ago
/**
* {@inheritdoc}
*/
public function getItems() {
return $this->__toObject();
}
/**
* {@inheritdoc}
*/
public function setRows($rows){
$this->rows = $rows;
return $this;
}
/**
* {@inheritdoc}
*/
public function getRows(){
return $this->rows;
}
/**
* {@inheritdoc}
*/
public function setRow($row){
$this->row = $row;
return $this;
}
/**
* {@inheritdoc}
*/
public function getRow($numRow = false){
return $numRow ? ($this->rows[$numRow + 1]?? null ) : $this->row;
}
/**
*
* {@inheritdoc}
*/
public function setNumRows($num){
$this->num_rows = $num;
return $this;
}
/**
* {@inheritdoc}
*/
public function getNumRows(){
return $this->num_rows;
}
2 years ago
/**
* {@inheritdoc}
*/
public function __toObject() {
return $this->data ? $this->data : $this->loop($this->rows);
}
/**
*
* @param mixed $array
* @return \Phacil\Framework\Databases\Object\ItemInterface[]
*/
protected function loop($array)
{
if($this->data) return $this->data;
$this->data = new SplObjectStorage();
foreach ($array as $key => $value) {
//$this->data[] = new \Phacil\Framework\Databases\Object\Item($value);
$obj = new \Phacil\Framework\Databases\Object\Item();
$this->data->attach($obj->setData($value));
}
return $this->data;
}
/**
* {@inheritdoc}
*/
public function getIterator(): \Traversable
{
$this->loop($this->rows);
return $this->data;
//return new \ArrayIterator($this->loop($this->rows));
}
}