Curry
PHP Framework

core

db

html

utility

Service

クラス概要

サービスクラスの位置付けはユーザー次第ですが、Curryでは基本的にはモデルの処理の取りまとめやトランザクション管理とメインロジック処理としての位置付けを推奨しています。これはつまりシステムのモデリング上のオブジェクトを表現するクラスと考えるとわかりやすくなります。
例えば通販サイトで売上情報の管理用テーブルとして売上ヘッダ情報テーブルと売上明細情報テーブルという2つのテーブルで構成されているとすると、モデルはそれぞれに対応させて作成し、「売上」という、モデリング上のオブジェクト単位はサービスで表現し、売上情報の登録はサービスクラスにメソッドを定義しますが、その中ではヘッダと明細という2つのテーブルのINSERTを行う、という具合です。

Serviceクラスを継承したサービスクラスは、その役割としての便利なメソッドが利用できます。

Serviceクラスでは独自に一つのデータベース接続インスタンスを保持しています。そしてmodelメソッドにより生成したモデルクラスのインスタンスは全てこの接続インスタンスを使用するため、トランザクション処理が容易に行えます。

基本的な構造としてはサービスクラスからはモデルクラスのメソッドを利用し、コントローラーからはサービスクラスのメソッドを利用するというようにするのが良いでしょう。

クラスファイル位置

curry/core/service.php

フィールド

フィールド名 アクセス 概要
$db protected PDO PDOクラスインスタンス

メソッド

メソッド名 アクセス 概要
model public 引数で指定されたクラス名のモデルクラスのインスタンスを取得します。
指定されたクラス名に対して、クラスファイル名に基づいた名前のクラスファイルが存在しない場合やクラス定義が存在しない場合は例外を発生します。
このメソッドはControllerクラスのmodelメソッドと全く同じ働きです。
begin protected beginTransactionメソッドのエイリアスです。beginTransactionと全く同じ動作です。
beginTransaction protected トランザクション処理を開始します。サービスクラスのmodelメソッドによって取得したモデルインスタンスは全て同一接続を利用しますので、トランザクションの対象となります。
commit protected beginメソッドによって開始されたトランザクションのデータベース更新を確定し、終了します。
rollback protected beginメソッドによって開始されたトランザクションのデータベースの更新を全て取り消し、元の状態に戻します。