dest =& $dest; $this->allowNull = $params["allow_null"] ?? false; $this->allowFalse = $params["allow_false"] ?? true; $this->allowEmpty = $params["allow_empty"] ?? true; } /** @var mixed */ protected $dest; function reset(&$dest): self { $this->dest =& $dest; return $this; } protected bool $allowNull; protected bool $allowFalse; protected bool $allowEmpty; function exists(): bool { return $this->allowNull || $this->dest !== null; } function available(): bool { if (!$this->exists()) return false; $value = $this->dest; if ($value === false) return $this->allowFalse; if ($value === "") return $this->allowEmpty; return true; } function get($default=null) { $value = $this->dest; if ($value === null && !$this->allowNull) return $default; if ($value === false && !$this->allowFalse) return $default; if ($value === "" && !$this->allowEmpty) return $default; return $value; } function set($value): void { $this->dest = $value; } function del(): void { $this->dest = null; } }