アチーブメントシステムをコーディングするための最良の方法
自分のサイトで使用するアチーブメントシステムを設計するための最良の方法を考えています。データベース構造は、3つ以上の連続したレコードが欠落していることを伝えるための最良の方法で見つけることができます。このスレッドは、実際には開発者からアイデアを得るための拡張機能です。 このウェブサイトでバッジ/達成システムについて多くの話をしているときに私が抱えている問題は、それだけです-それはすべて話であり、コードはありません。実際のコード実装例はどこにありますか? ここで、人々が貢献してくれることを願っているデザインを提案し、拡張可能なアチーブメントシステムをコーディングするための優れたデザインを作成できることを願っています。これが最善だと言っているわけではありませんが、それは可能性のあるスターティングブロックです。 お気軽にご意見をお寄せください。 私のシステム設計のアイデア 一般的なコンセンサスは、「イベントベースのシステム」を作成することであるようです。投稿の作成、削除などの既知のイベントが発生するたびに、そのようにイベントクラスが呼び出されます。 $event->trigger('POST_CREATED', array('id' => 8)); 次に、イベントクラスは、このイベントを「リッスン」しているバッジを見つけ、次にrequiresそのファイルを見つけて、次のようにそのクラスのインスタンスを作成します。 require '/badges/' . $file; $badge = new $class; 次に、呼び出されたときtriggerに受信したデータを渡すデフォルトのイベントを呼び出します。 $badge->default_event($data); バッジ ここで本当の魔法が起こります。各バッジには、バッジを授与するかどうかを決定するための独自のクエリ/ロジックがあります。各バッジは、たとえば次の形式で設定されます。 class Badge_Name extends Badge { const _BADGE_500 = 'POST_500'; const _BADGE_300 = 'POST_300'; const _BADGE_100 = 'POST_100'; function get_user_post_count() { $escaped_user_id = mysql_real_escape_string($this->user_id); $r = mysql_query("SELECT COUNT(*) …