私は現在自分のMVCを改善していますが、次のシナリオの適切な解決策を見つけることができません:ほとんどのモデルでは、いくつかの(別のモデルによってすでに検証されている)ユーザーベースの入力を使用しており、それらを渡す必要がありますもちろん、コントローラー(基本的にモデルに入力をどう処理するかを指示します)からさまざまなモデルまで。現時点では、すべてのユーザー入力をプロパティに入れています。
foreach($this->properties as $property => $empty)
{
if(isset($_POST[$property]))
{
$this->properties[$property] = htmlspecialchars(trim($_POST[$property]));
}
}
最終的に、何かをするために新しいモデルが必要になったとき、私はそれを次のように呼びます。
new view('calendar',$data,$this->properties);
そして最後に、モデルで入力/変数をモデルのプロパティに配置することで受け取ります…</ p>
class validation
{
public function __construct($values)
{
foreach($values as $property => $value)
{
$this->{$property} = $value;
}
}
}
そうすれば、変数がどこから来たのかを考える必要がなくなり(ユーザー入力が検証された後は、もう気になりません)、いつでもクリーンで読みやすいバージョンの$this->user_input
しかし、私はどういうわけか、これは最も簡単な方法ではなく、おそらく良い方法でもないと感じています。私が最も気になるのは、新しいクラス/モデルを作成するときは、常にモデルに入力を独自のプロパティに取り込むように指示する必要があり、新しいクラスを呼び出すときは常にパラメーターを渡す必要があることです。
コントローラーを親クラスにすることなく、新しいクラスが呼び出されたときにユーザーからこれらの変数を継承できる方法はありますか?それとも、コントローラーを親にするのに実際に意味がありますか?別のコントローラーがモデルを使用する場合、混乱するだろうと思います。