クラスが実装するインターフェイスに基づいてロジックを実行した場所がいくつかあります。これが間違っている場合とそうでない場合がある理由はありますか?(汚れた感じ)
これを行う理由は、これらを決定するためにクラスのプロパティやメソッドを追加する必要がないためです。基本的に、クラス定義では、実行できることと実行できないことを明示的に記述できます。
1つのユースケースはajax呼び出しであり、ログインが必要なものとそうでないものがあります。
class ajax_ads extends ajax_controller implements no_login {
}
また、インターフェースにはメソッドがなく、この目的で使用されます。
interface no_login {}
次に、ベースコントローラーで:
$controller = controller::factory()
if( !($controller instanceof no_login) && !$controller->LoggedIn()){
return $controller->redirect(/*login page*/);
}
instance_ofは軽量で使いやすいようで、問題なく動作しますが、インターフェイスの目的を完全に悪用しているように感じます。
だから私は尋ねます、ロジックを決定するためにインターフェースを使用しているのは悪い考え、悪いおっと、または「大丈夫」ですか?