Ferreteria/v0.6/clade/Sys/Data/Engine/Conn
Jump to navigation
Jump to search
| ||||||||||||||||||||||||||||||
About
- PURPOSE: base class for talking to a database engine
- This is a connection (to the DB engine), but it also contains a connection (to the shell endpoint).
Pages
Code
interface iConn extends BaseIface, HasClsRostIface, HasObjRostIface {
// OBJECTS
function OOper() : OperIface;
function OSock() : SockIface; // code-to-cmd-endpoint
}
abstract class caConn extends BaseClass implements SelfIface {
use HasClsRostTrait;
use HasObjRostTrait;
// ++ CONFIG ++ //
// #[Oper]
abstract protected function OperClass() : string;
static protected function RosterClass() : string { return RostClass::class; } // OVERRIDE
// -- CONFIG -- //
// ++ SETUP ++ //
// $sSlug is the name for this Connection
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;
// #[Oper]
public function OOper() : OperIface { return $this->oOper ?? ($this->oOper = $this->OOperNew()); }
// #[Oper]
protected function OOperNew() : OperIface {
$scOper = $this->OperClass();
$this->AmHere("Making NEW $scOper");
$oOper = $scOper::FromConn($this);
return $oOper;
}
// -- OBJECTS -- //
}