Ferreteria/v0.6/clade/Sys/Data/aux/meta/InOut: Difference between revisions
Jump to navigation
Jump to search
(Created page with "{{page/clade/v2 |fam= {{!}} align=right {{!}} {{l/ver/clade|Sys\FileSys\Node|Fi}} {{!}} align=center {{!}} → {{l/ver/clade|Sys\Data\aux\meta|InOut}} {{!}} → ''(none)'' |alia= {{!}}- {{!}} '''ArrayClass'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\FileSys\aux\Fi|Data}} {{!}}- {{!}} '''BaseClass'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\FileSys\Aspect\InOut|Fi}} {{!}}- {{!}} '''QStrClass'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Data\Mem...") |
mNo edit summary |
||
| Line 6: | Line 6: | ||
|alia= | |alia= | ||
{{!}}- | {{!}}- | ||
{{!}} ''' | {{!}} '''Array'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\FileSys\aux\Fi|Data}} | ||
{{!}}- | {{!}}- | ||
{{!}} ''' | {{!}} '''Base'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\FileSys\Aspect\InOut|Fi}} | ||
{{!}}- | {{!}}- | ||
{{!}} ''' | {{!}} '''QStr'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Data\Mem\QVar|Str}} | ||
{{!}}- | {{!}}- | ||
{{!}} '''SelfNode'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\Data\aux\meta|Node}} | {{!}} '''SelfNode'''* [c,i] {{!!}} {{l/ver/clade/full|p=ferreteria|Sys\Data\aux\meta|Node}} | ||
Revision as of 12:30, 7 October 2025
| ||||||||||||||||||||
Code
as of 2025-10-06
interface iInOut extends BaseIface {
// DATA: values
function DatabaseSlug(string $s=NULL) : string;
function TargetFileName(string $fn=NULL) : string;
function SchemaName(string $s=NULL) : string;
function DataFormat(string $s=NULL) : string;
// DATA: object
function TargetNode() : DataNodeIface;
}
class cInOut extends BaseClass implements SelfIface {
// ++ CONFIG ++ //
protected function ArrayClass() : string { return ArrayClass::class; }
protected function NodeClass() : string { return SelfNodeClass::class; }
// -- CONFIG -- //
// ++ DATA: values ++ //
// OVERRIDE: safe
public function LetIt(int|string $snKey,mixed $vUpdate) : mixed { // updates value if not NULL; always returns latest value
$oaData = $this->OAData();
if (is_null($vUpdate)) {
// no value given for setting, so attempt to retrieve:
#echo $this->OAData()->ReflectThis()->Report();
$os = QStrClass::FromOAValue($oaData,$snKey);
$os = $oaData->GetItQ($snKey);
if ($os->HasIt()) {
$vRtn = $os->GetIt();
} else {
// No update and no value currently set: return NULL.
$vRtn = NULL;
}
} else {
// set the value, but return it too (for consistency):
#echo $this->ReflectThis()->Report();
$oaData->SetIt($snKey,$vUpdate);
$vRtn = $vUpdate;
}
return $vRtn;
}
public function DatabaseSlug(string $s=NULL) : string { return $this->LetIt(SelfNodeIface::sfDbaseSlug,$s); }
public function TargetFileName(string $fn=NULL) : string { return $this->LetIt(SelfNodeIface::sfFileName,$fn); }
public function SchemaName(string $s=NULL) : string { return $this->LetIt(SelfNodeIface::sfDbaseSchema,$s); }
/* DEBUG version
public function SchemaName(string $s=NULL) : string {
echo $this->ReflectThis()->Report();
#$ar = $this->GetVals();
#$oa = new \Woozalia\Ferret\Sys\Diag\Util\cArray($ar);
#echo $oa->DumpLines().'-----'.CRLF;
return $this->LetIt(SelfNodeIface::sfDbaseSchema,$s);
}
*/
public function DataFormat(string $s=NULL) : string { return $this->LetIt(SelfNodeIface::sfDataType,$s); }
// ++ DATA: object ++ //
public function TargetNode() : DataNodeIface {
#echo $this->ReflectThis()->Report();
$fn = $this->TargetFileName();
$oIdent = $this->Node()->Ident();
$fp = $oIdent->SpecPath();
$fsTarg = $fp.'/'.$fn; // TODO: a more rigorous way of handling spec assembly, relative paths, etc.
$sc = $this->NodeClass();
#echo "NODE CLASS: [$sc]".CRLF;
$onTarg = ($sc)::FromSpec($fsTarg);
#echo $onTarg->ReflectThis()->Report();
return $onTarg;
}
// -- DATA -- //
}