そのため、自作の MVC フレームワークをいじっていると、リファクタリングが必要と思われるものに気付きました。
モデル内に存在する関数を呼び出すビューに関数呼び出しがあり、その関数がパラメーターにセッション/ポスト/取得変数を受け取る場合。これらの vars を関数呼び出しで引数として渡すか、モデル内の関数でそれらにアクセスするのが最善ですか?
ビュー内のコード:
$model = $this->model; // Shortcut to the model
$vaildator = $this->model->validator; // Shortcut to the Validator object in the model
$btnPressed = $this->model->btnPressed; // Shortcut to the btnPressed flag var in the model
<label for="firstName">First Name: <span class="<?php echo $model->setReq($_POST['firstName'], 'First name'); // Set the class of the span tag the holds the 'required' text ?>">(required)</span></label>
<input type="text" name="firstName" id="firstName" title="First name" value="<?php echo htmlspecialchars($btnPressed ? $_POST['firstName'] : 'First name'); // Echo the user's entry or the default text ?>" maxlength="50" />
<?php if($btnPressed) $vaildator->valName($_POST['firstName'], true, true, 'First name'); // Check for errors and display msg if error is found ?>
モデル内のコード:
// If the field is empty or still contains the default text, highlight the 'required' error msg on the input field by changing the msg's class
// Note: used only for input fields that are required
public function setReq($postVar, $defaultText)
{
$className = 'required';
if($this->btnPressed)
{
$className = $postVar == '' || $postVar == $defaultText ? 'reqError' : 'required';
return htmlspecialchars($className);
}
else
{
return htmlspecialchars($className);
}
}
私が尋ねる理由は、ビューの関数呼び出しに引数を入れるとビューが論理的に重いように見えますが、逆の方法でモデルのセッション/取得/ポスト変数にアクセスすると、少しハッキーに見え、コードが非常に再利用可能です。アドバイスをありがとう!