Skip to content

kumamidori/Sample.ExpressionLanguage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

式言語を使ったミニサンプルコード

Symfony/Expression Language コンポーネントを使った設定式のサンプル。

下記ブログを拝読して考えたみたものです。

リファクタリングのエッセンス | GuildWorks Blog

お題の説明

  • 価格が季節に連動するようなサービスを売っているとする。(避暑地とか、スキー場とか、ガス料金とか?)
  • 季節(夏かそれ以外の季節か)によって料金の算出ルールが異なる。

可変点

  • 変わりやすいビジネスポリシー
    • 料金の計算式
      • 式自体や、式中の固定値の値は可変
    • 夏の定義
      • 何月何日から何日までを夏料金にするのか?は可変

共通点

  • 料金は季節に応じた計算ルールによって求まる

ルール

季節 期間 料金
7月〜8月 (基本料金) x (夏レート)
夏以外(デフォルト) それ以外の季節 (基本料金) x (デフォルトレート) + (デフォルト固定料金)

季節別設定式

季節別設定式

  normal:
    span: (date >= 0101 and date < 0701) or date >= 0901
    formula: base * 1.2 + 1000
  summer:
    span: date >= 0701 and date < 0901
    formula: base * 0.9

モデル

式言語サンプルのモデル

実行方法

  • セットアップ
$ composer install
  • 実行
$ php scripts/main.php
  • Test
$ phpunit

About

Symfony2式言語ミニサンプル

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages