Ferreteria/v0.6/clade/Data/Mem/QVar/Obj
Jump to navigation
Jump to search
| ||||||||||||||||
Code
as of 2025-10-17
interface iObj extends BaseIface {
// SETUP
static function FromObject(object $o) : self;
static function FromObjNz(object &$o) : self;
// VALUE ACCESS
function SetIt(object $v);
function SetItNz(?object $v);
function GetIt() : object;
function GetItNz(?object $vDefault=NULL) : ?object;
}
class cObj extends BaseClass implements iObj {
// ++ SETUP ++ //
static public function FromObject(object $o) : self {
$oThis = new static;
$oThis->SetIt($o);
return $oThis;
}
static public function FromObjNz(object &$o) : self {
$oThis = new static;
$oThis->RefIt($o);
}
// -- SETUP -- //
// ++ ACCESS ++ //
public function HasIt() : bool { return $this->HasObj(); }
public function SetIt(object $o) { $this->SetObj($o); }
public function SetItNz(?object $o) { $this->SetObjNz($o); }
public function GetIt() : object { return $this->GetObj(); }
public function GetItNz(object $oDefault=NULL) : ?object { return $this->GetObjNz($oDefault); }
// ++ ACCESS: internal ++ //
protected function TypeOk(mixed $v) : bool { return is_object($v); }
static private $nObjectLoop = 0;
protected function Validated() : object {
$nLoop = self::$nObjectLoop;
self::$nObjectLoop++;
$o = $this->v;
if (DEBUG_CHECK_TYPES && !is_object($o)) {
if ($nLoop < MAX_INTERNAL_RECURSION) {
$sLine = TypesStatic::DumpLine($o);
} else {
echo "DEBUG RECURSION (N=$nLoop); skipping DumpLine() and quitting.<br>";
die();
}
if (CHECK_ASSERTS) $this->HardAssert(FALSE,"expected an object, found $sLine");
}
self::$nObjectLoop--;
return $o;
}
// -- ACCESS -- //
}