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); }
 | |
| }
 |