## サービスコンポーネントの構造

サービスコンポーネントは、クラスとして実装します。 サービスコンポーネントであることを示すために、@service アノテーションを使用します。SCA ランタイムは、 スクリプトのファイル名にもとづく規約でコンポーネント名を決定します。 したがって、クラス名とスクリプトのファイル名は同じにしておく必要があります。

PHP SCA コンポーネントは常にサービスを公開しています。 コンポーネントは、ウェブサービスへのリクエストの結果としてコールされるか スクリプト内の別のコンポーネントから直接コールされるかのいずれかの方法でしか起動しません。 このため、有効な PHP SCA コンポーネントは常に @service アノテーションを含んでおり、少なくともひとつの public メソッドを持っています。

各 SCA コンポーネントは、SCA.php をインクルードする必要があります。 ここには SCA クラスの定義が含まれているだけでなく、 スクリプトがコールされた際に実行される、 コンポーネントとして振舞うための PHP コードも含まれています。

警告

もし別のファイルもインクルードするのなら、それは SCA.php をインクルードする前に行わなければなりません。 SCA.php の後で別のファイルをインクルードすると、 SCA ランタイムがクラスを処理する際に、 そのファイルの内容が処理されません。

以下の例で、これらすべての構造について説明します。

例1 SCA for PHP のコンポーネントの構造

`<?php
// 何かをインクルードします
include "SCA/SCA.php";
/**
* @service
*/
class ConvertedStockQuote {
// インスタンス変数、ビジネスロジック、そして最低ひとつの public メソッドを含めます
}
?>`