Ferreteria/v0.6/clade/Sys/Data/Engine/Conn: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 19: | Line 19: | ||
{{!}}- | {{!}}- | ||
{{!}} '''View'''* [i] {{!}}{{!}} {{l/ver/clade|IO\O|View}} | {{!}} '''View'''* [i] {{!}}{{!}} {{l/ver/clade|IO\O|View}} | ||
}} | |||
==Code== | |||
''as of 2025-10-01'' | |||
{{fmt/php/block|1= | |||
interface iConn extends BaseIface, HasRostIface { | |||
// INVOCATION | |||
//#[BaseIface] function Open() : ActionIface; | |||
//#[BaseIface] function Shut() : ActionIface; | |||
// OBJECTS | |||
function OOper() : OperIface; | |||
function OSock() : SockIface; // code-to-cmd-endpoint | |||
// UI | |||
//#[\Woozalia\Ferret\IO\iAspect] function DescribeInline() : string; | |||
} | |||
abstract class caConn extends BaseClass implements SelfIface { | |||
use HasRostTrait; | |||
// ++ CONFIG ++ // | |||
// #[Oper] | |||
abstract protected function OperType() : string; | |||
// -- CONFIG -- // | |||
// ++ SETUP ++ // | |||
public function __construct(string $sSlug, private SockIface $oSock) { | |||
$this->WithSlug($sSlug); | |||
} | |||
public function OSock() : SockIface { return $this->oSock; } | |||
// -- SETUP -- // | |||
// ++ OBJECTS ++ // | |||
public function Inspect() : ViewIface { return new ($this->InspectorClass())($this,$this->OSock(),$this->OCred(),$this); } | |||
// SHORTCUT | |||
protected function OCred() : CredsIface { return $this->OSock()->OCred(); } | |||
// #[Oper] | |||
private $oOper=NULL; | |||
#public function HoldOper(OperIface $o) : void { $this->oOper = $o; } | |||
// #[Oper] | |||
public function OOper() : OperIface { return $this->oOper ?? ($this->oOper = $this->OOperNew()); } | |||
// #[Oper] | |||
protected function OOperNew() : OperIface { | |||
$sType = $this->OperType(); | |||
$osOper = OperAdmin::FromClassSlug($sType); | |||
if ($osOper->HasIt()) { | |||
$scOper = $osOper->GetIt(); | |||
#$echo $this->ReflectThis()->Report(); | |||
#echo $scOper::ReflectSelf()->Report(); | |||
#$oOper = new ($scOper); | |||
$oOper = $scOper::AccessSelf(); | |||
$oOper->WithConn($this); // give new Oper a pointer to its Conn | |||
} else { | |||
echo self::CodingPrompt("This Connection expects an engine of type '$sType' to be defined."); | |||
$oOper = NULL; | |||
} | |||
return $oOper; | |||
} | |||
// -- OBJECTS -- // | |||
} | |||
}} | }} | ||
Revision as of 13:07, 2 October 2025
| ||||||||||||||||||||||||
Code
as of 2025-10-01
interface iConn extends BaseIface, HasRostIface {
// INVOCATION
//#[BaseIface] function Open() : ActionIface;
//#[BaseIface] function Shut() : ActionIface;
// OBJECTS
function OOper() : OperIface;
function OSock() : SockIface; // code-to-cmd-endpoint
// UI
//#[\Woozalia\Ferret\IO\iAspect] function DescribeInline() : string;
}
abstract class caConn extends BaseClass implements SelfIface {
use HasRostTrait;
// ++ CONFIG ++ //
// #[Oper]
abstract protected function OperType() : string;
// -- CONFIG -- //
// ++ SETUP ++ //
public function __construct(string $sSlug, private SockIface $oSock) {
$this->WithSlug($sSlug);
}
public function OSock() : SockIface { return $this->oSock; }
// -- SETUP -- //
// ++ OBJECTS ++ //
public function Inspect() : ViewIface { return new ($this->InspectorClass())($this,$this->OSock(),$this->OCred(),$this); }
// SHORTCUT
protected function OCred() : CredsIface { return $this->OSock()->OCred(); }
// #[Oper]
private $oOper=NULL;
#public function HoldOper(OperIface $o) : void { $this->oOper = $o; }
// #[Oper]
public function OOper() : OperIface { return $this->oOper ?? ($this->oOper = $this->OOperNew()); }
// #[Oper]
protected function OOperNew() : OperIface {
$sType = $this->OperType();
$osOper = OperAdmin::FromClassSlug($sType);
if ($osOper->HasIt()) {
$scOper = $osOper->GetIt();
#$echo $this->ReflectThis()->Report();
#echo $scOper::ReflectSelf()->Report();
#$oOper = new ($scOper);
$oOper = $scOper::AccessSelf();
$oOper->WithConn($this); // give new Oper a pointer to its Conn
} else {
echo self::CodingPrompt("This Connection expects an engine of type '$sType' to be defined.");
$oOper = NULL;
}
return $oOper;
}
// -- OBJECTS -- //
}