ポリモーフィズムを使用して複数の結果を返し、複数の動作を同時に使用する
<p>Laravel 9 を使用しています。次の内容を含むリクエストがあります: </p>
<li>SEASON という名前のパラメータ、値は <code>array</code> または null にすることができます
したがって、<code>SEASON</code> パラメータは <code>array</code> または <code>null</code></li> にすることができます。
<li>EXPIRY という名前のパラメータは、<code>array</code> または <code>null</code></li> のいずれかになります。
</ul>
<p>2 つのクラスがあり、1 つは <code>SEASON</code> 機能用、もう 1 つは <code>EXPIRY</code> 用で、どちらも <code>Repository</code> 拡張機能に由来します。どちらにも、配列</p>を返す<code>execute</code>というメソッドがあります。
<pre class="brush:php;toolbar:false;">抽象クラス リポジトリ
{
抽象パブリック関数execute():配列;
}
クラス Expiry はリポジトリを拡張します
{
パブリック関数execute()
{
return ['リクエストには有効期限パラメータが含まれており、季節的な動作が完了しました'];
}
}
クラス Season はリポジトリを拡張します
{
パブリック関数execute()
{
return ['リクエストにはシーズンパラメータが含まれており、有効期限の動作が完了します'];
}
}</pre>
<p>リクエストにSEASONが含まれる場合はSeasonクラスのexecuteメソッドを呼び出し、リクエストにExpiryが含まれる場合はexpiryのexecuteメソッドを呼び出します。または、それらを呼び出して実行結果を配列にマージし、結果を取得できるようにします。 </p>
<pre class="brush:php;toolbar:false;">['リクエストには有効期限パラメータが含まれており、季節的な動作が完了しました', 'リクエストには有効期限パラメータが含まれており、有効期限の動作は完了しました']</pre> ;
<p>これはコントローラーで試したものです: </p>
<pre class="brush:php;toolbar:false;">パブリック関数ブートストラップ($data)
{
$parseTopics = Helper::parseTopicsRequest();
$basicProgram = new BasicProgramRepository();
$seasonalProgram = new SeasonalProgramRepository($parseTopics['SEASONAL']);
$object = count($parseTopics['SEASONAL']) ? $seasonalProgram : $basicProgram;
// ポリモーフィズム
return $object->execute();
}</pre>
<p>質問 1:
私のニーズを解決するために、これを使用すべきか、それとも同様のものを使用すべきかわかりません: </p>
<pre class="brush:php;toolbar:false;">$employe = new Program(new BasicProgramRepository());</pre>
<p>期待される結果:
期待される結果は、シーズンパラメータと有効期限があるかどうかによって異なります。私が達成したいのは、別の動作 (実行メソッド) を使用することです</p>