パラメーター
8.1 〜
WGParameters の利用パターン
<?php
class WGGIntAllowNULL extends WGGInt
{
public function __construct( int $min = 0, int $max = PHP_INT_MAX )
{
parent::__construct( $min, $max );
$this->invalid(new WGGThru());
}
}
trait EXParaIdAllowNULL
{
#[WGPara( name: 'id', gauntlet: new WGGIntAllowNULL(), default: null )]
public ?int $id = null;
}
ガントレット WGGInt を拡張して、int 以外も許容するようにしています。Int以外の場合は、default値として null がセットされますが、エラーは発生しません。
<?php
require_once 'waggo.php';
class EXXMLBoxesBoxParams extends WGParameters
{
use EXParaIdAllowNULL;
}
class EXXMLBoxesBox extends HKXMLController
{
protected EXXMLBoxesBoxParams $p;
protected function initFirst()
{
$this->p = ( new EXXMLBoxesBoxParams() )->by( WGParameters::METHOD_GET )->store( $this );
}
protected function init()
{
if ( ( $this->p = EXXMLBoxesBoxParams::restore( $this, WGParameters::METHOD_GET ) ) == null ||
$this->p->hasError() )
{
$this->abort();
}
}
}
もちろん、WGParameters は、trait を使わなくても記述できます。
trait を使うと、構築するアプリケーションの考え方にあわせて抽象化し、管理することができます。
初回アクセスの場合
initFirst の初回アクセスで、引き渡されたパラメータ(この場合は、GET による。)を読み込み、トランザクショナルセッションに保持します。
initFirst から連続して、init に入りますが、パラーメータを、トランザクショナルセッションから一時的に読み込みつつ、その内容が引き渡されたパラメータと一致する場合は、パラメータを復元します。
これ以降、ダーティだった情報がクリーン化され、$this->p->id へのアクセスが保証されます。
継続アクセスの場合
パラーメータを、トランザクショナルセッションから一時的に読み込みつつ、その内容が引き渡されたパラメータと一致する場合は、パラメータを復元します。
これ以降、ダーティだった情報がクリーン化され、$this->p->id へのアクセスが保証されます。