76 lines
1.9 KiB
PHP
76 lines
1.9 KiB
PHP
<?php
|
|
namespace nur\data\expr;
|
|
|
|
use nur\A;
|
|
use nur\b\coll\BaseArray;
|
|
use nur\config;
|
|
use nur\func;
|
|
use nur\session;
|
|
|
|
class SimpleContext extends BaseArray implements IContext {
|
|
/**
|
|
* @return array une liste de sources {$name => $source} conformes au schéma
|
|
* {@link IContext::SOURCE_SCHEMA}
|
|
*/
|
|
protected function SOURCES(): array {
|
|
return static::SOURCES;
|
|
} const SOURCES = [];
|
|
|
|
/**
|
|
* @return array une liste d'expressions {$name => $expr} conformes au schéma
|
|
* {@link IContext::EXPR_SCHEMA}
|
|
*/
|
|
protected function EXPRS(): array {
|
|
return static::EXPRS;
|
|
} const EXPRS = [];
|
|
|
|
/**
|
|
* @return array une liste de conditions {$key => $cond} conformes au schéma
|
|
* {@link IContext::COND_SCHEMA}
|
|
*/
|
|
protected function CONDS(): array {
|
|
return static::CONDS;
|
|
} const CONDS = [];
|
|
|
|
/** @var mixed l'objet sur lequel sont appliquées les appels de méthode */
|
|
protected $object;
|
|
|
|
function __construct(?array $data=null) {
|
|
parent::__construct($data);
|
|
$this->object = $this;
|
|
}
|
|
|
|
function getContextInfos(): array {
|
|
return [
|
|
"sources" => $this->SOURCES(),
|
|
"exprs" => $this->EXPRS(),
|
|
"conds" => $this->CONDS(),
|
|
];
|
|
}
|
|
|
|
function getValue(string $pkey) {
|
|
#XXX parcourir les sources
|
|
return A::pget($this->data, $pkey);
|
|
}
|
|
|
|
function getSession(string $pkey) {
|
|
return session::pget($pkey);
|
|
}
|
|
|
|
function getConfig(string $pkey) {
|
|
return config::get($pkey);
|
|
}
|
|
|
|
function callMethod($method) {
|
|
func::ensure_func($method, $this->object, $args);
|
|
return func::call($method, ...$args);
|
|
}
|
|
|
|
## ArrayAccess
|
|
function has($key): bool { return $this->_has($key); }
|
|
function &get($key, $default=null) { return $this->_get($key, $default); }
|
|
function set($key, $value): self { return $this->_set($key, $value); }
|
|
function add($value): self { return $this->_set(null, $value); }
|
|
function del($key): self { return $this->_del($key); }
|
|
}
|