はのは、新しい記事が作成されているとしましょう、それはまた、ログインする必要があります:コード内2つのモデルで動作するコードをどのように整理しますか?そう、
INSERT INTO article VALUES ($name);
INSERT INTO logs VALUES ($name, GET_LAST_ID());
:コントローラで
class Article
{
public function add($name)
{
Sql::exec('INSERT INTO article VALUES ('.$name.')');
}
}
class Log
{
public function add($name)
{
Sql::exec('INSERT INTO logs VALUES ('.$name.', GET_LAST_ID());
}
}
:もちろん
$article->add('s');
$log->add('s');
( SQLハイジャックとは別に)悪いですが、いつでも繰り返すことができるので、COPY + PASTEはそれになります。どのように新しいクラスに編成しますか? AddArticleAndLogIt
である必要がありますか?確かにそうではありません。
:としてあなたがこれを使用する
。追加される現在の記事と同じ値をログテーブルに追加するトリガーを作成します。データベースのビジネスロジックに反対する人もいますが、これはあなたのケースに合っていると思います。 – Phiter
「ログ」はここでのみ使用されていますか、それともサービスですか?私は値の配列を取って、どこかに記録する「ロギング」サービスを持っているのではないでしょうか?あなたが望むなら、どこでロガーを呼ぶかはあなたが決めます。 –
@PhiterFernandes、いいえ、申し訳ありませんが、私は "オブザーバー"パターンを嫌いです。これはにおいと予測不可能なコードのコアです –