CodeZine(コードジン)

特集ページ一覧

PHP Rulesでスパゲッティコードをすっきりと

ルールとデータをプログラムコードから分離

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/09/22 14:00

ダウンロード サンプルソース (2.9 KB)

 PHP Rulesのインストール方法と使用方法を学びましょう。PHP Rulesを使用すると、条件ロジック文をソースコードから分離し、独立して管理できます。本記事では、PHP Rulesのインストールおよび独自のルール作成方法や、データの評価方法を説明します。

目次

はじめに

 HP Rulesは、条件ロジック文をソースコードとデータベースから分離することを可能とするルールエンジンで、条件ロジックを再利用可能なファイルに配置することにより、それらを独立して定義および管理できるようにします。

 本記事では、以下の方法について説明します。

  • PHP Rulesをインストールし、テキストファイルまたはデータベースに格納されたルールを実行する
  • 特定のケースから始めて、独自のルールを作成する
  • テキストファイルに格納されたルールを評価する
  • データベースに格納されたルールを評価する

PHP Rulesのダウンロードとインストール

 PHP Rulesは、ここからダウンロードできます。そのページの一番下に[Download and install PHP Rules](PHP Rulesのダウンロードとインストール)というタイトルのセクションがあります。以下の手順に従って、PHP Rulesをインストールします。

  1. アーカイブrules.zipをダウンロードします。
  2. アーカイブをhtdocsディレクトリにunzipします。
  3. パスhtdocs/rules/system/application/configにおいて、ローカルなパラメータに基づいてデータベースを設定します。
  4. ホスト名、ユーザー名、パスワードなどを設定します。
  5. MySQLに「rules」という名前の新しいデータベースを作成します。
  6. パスrules/index.phpで、スクリプトindex.phpを実行します。
  7. 2つの例をインストールするには、[install wizard]リンクを選択します(図1参照)。
  8. 図1 PHP Rulesのインストール:[install wizard]リンクをクリックして、PHP Rulesをインストールする
    図1 PHP Rulesのインストール:[install wizard]リンクをクリックして、PHP Rulesをインストールする
  9. 最後に、[Install the Demo Database](デモデータベースのインストール)ボタンをクリックします(図2参照)。
  10. 図2 デモデータベースのインストール:例の実行には、デモデータベースが必要
    図2 デモデータベースのインストール:例の実行には、デモデータベースが必要

 http://localhost/rules/index.php/rules/install/dbのページには、図3に示すように2つの例へのリンクがあります。

図3 例の実行:各リンクをクリックすると、2つの例が実行される
図3 例の実行:各リンクをクリックすると、2つの例が実行される

PHP Rulesの使用

 2つの例が示すように、命題結果を得るには、まずRuleファイルとRuleContextファイルを作成する必要があります。Ruleファイルは、命題、演算子、変数によって記述された、事実を表す簡単な文で構成されます。RuleContextファイルには、プレーンテキストとして保存されているか、またはデータベース内に格納されたルールに対して、テストしたいデータが含まれます。Ruleファイルは、RuleContextファイルを評価し、RuleContextファイル内の情報がRuleを満たすかどうかを示すBoolean値を返します。

 本記事では、ルールファイルが例に対応しています。本記事のサンプルコードはすべてダウンロードすることができます。2つのテキストファイルSuitableForScholarship.rulおよびSuitableForScholarship.txt.conと、リレーショナルデータベースファイルSuitableForScholarship.sql.conは、rules/dataディレクトリに格納されています。これらのルール例では、学生が奨学金の受給に適しているかどうかを判断するために、テキストファイルとデータベースの両方に格納されたRuleContextデータに対するテストを行います。奨学金を得るために学生が満たすべきルールは、以下のとおりです。

  • 学生の年間平均成績が9.5
  • または、学生が全国コンテストに出場し、かつ、優勝した経験がある
  • 学生が高校に在籍している
  • 学生の両親が、学生が奨学金を申請することに同意している

 上記のルールを構成するRuleファイルは、以下のSuitableForScholarShip.rulのようになります。

# SuitableForScholarShip.rul
# Rule establishing when a student can
# gets an international scholarship
studentAnnualAverage EQUALS 9.5
studentIsParticipatingToContest IS true      
studentIsGettingFirstPrize IS true
AND
OR
studentIsInHighschool IS true
studentParentsAreAgree IS true
AND
AND
※著者注

 ルールでは、大文字と小文字が区別されます。「is TRUE」、「Is True」、「equals」など、ルールのキーワードやフレーズの大文字と小文字を間違えると、エラーが生じます。

 SuitableForScholarShip.rulファイルは、「.rul」という拡張子が付いたプレーンのテキストファイルであることに注意してください。ルール自体は、逆ポーランド記法(RPN)で記述します。RPNについては、ここを参照してください。

 これらのルールをボトムアップに「変換」すると、次のようになります。

(studentParentsAreAgree AND studentIsInHighschool) AND 
   ((studentIsGettingFirstPrize AND studentIsParticipatingToContest) OR 
     studentAnnualAverage)
※著者注

 本記事の2つの例では、同一のSuitableForScholarShip.rulファイルを使用しますが、RuleContextファイルが異なります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Octavia Andreea Anghel(Octavia Andreea Anghel)

    経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5