ページのPHP設定
サイト内のページ(ソース設定)にて、PHPを実行することができます。
実行結果はThymeleafを使用し、ページのbody(ソース設定)およびブロック(ソース設定)に渡すことができます。
外部サービスのAPIやSPIRAL ver.2のAPIと連携することで、多機能なアプリケーションを構築することができます。
仕様
SPIRAL ver.2で提供するPHPの構成

各機能の役割
| 機能 | 説明 |
|---|---|
| PHP |
実行するプログラムを記述します。 実行結果をechoやprint_r()でPHP設定画面に出力することはできません。Thymeleaf経由でページに表示します。 Thymeleafに値をセットする方法などはこちらをご覧ください。 |
| Thymeleaf |
PHPの実行結果を受け取り、ページおよび認証エリアに渡します。 |
|
ページおよび認証エリアページのbody(ソース設定)およびブロック(ソース設定) |
Thymeleafを使用して、PHPの実行結果を画面に表示します。 エラー発生時はエラー文言を画面に表示します。 ThymeleafでPHP実行結果を呼び出す方法はこちらをご覧ください。 |
| PHP環境変数 |
APIキーやAPIエンドポイントURLなど、サイト内で何度も使用する値を登録しておき、独自クラス「$SPIRAL」を使用して、ページのPHPやPHPモジュールで呼び出すことができます。 設定方法については、こちらをご覧ください。 |
| PHPモジュール |
APIへのリクエストなど、サイト内で何度も使用するPHPプログラムを登録しておき、ページのPHPやPHPモジュールで呼び出すことができます。 PHPモジュールの仕様については、こちらをご覧ください。 |
| PHPエラーログ |
ページのPHPでエラーが発生した場合、エラーログを確認することができます。 PHPエラーログの仕様については、こちらをご覧ください。 |
設定順
1.ページのPHPタブにプログラムを設定します。
必要に応じて、PHP環境変数やPHPモジュールを呼び出します。
2.Thymeleafに実行結果をセットします。
3.ページや認証エリアのbodyタブやブロックのソースにて、Thymeleafで値を呼び出します。
提供するPHPのバージョン
使用可能なPHPバージョンについてはPHPバージョンについてをご参照ください。
PHP実行タイミング
PHPを記載しているページへアクセスした時、PHPを実行します。
以下の順で処理されます。
1.PHP
2.Thymeleaf
3.body(head、CSS、JavaScript)
※フォームで使用する ${values['f0XXX']} などのコードはThymeleaf機能上で処理されます。
※CSS/JavaScriptの記述場所による実行順についてはこちらをご参照ください。
設定できるPHPの数とサイズ
1つのページにつき、1つのPHPソース(最大300,000bytes)を設定できます。
利用方法
PHPの基本的な設定方法
1.ページ
ページでPHPを使用する場合、サイト管理>サイト>ページ一覧>ページにて、「PHP」タブを表示し、プログラムを記述します。

2.認証エリア
認証エリアページでPHPを使用する場合、サイト管理>サイト>認証エリア>認証エリアページにて、「PHP」タブを表示し、プログラムを記述します。

PHPの実行バージョン
指定可能なPHPの実行バージョンを設定できます。
サイト機能については、サイト単位ごとに設定するPHPバージョンと、各ページごとに設定するPHPバージョンの指定があります。
詳細はPHPバージョンについてをご確認ください。
独自クラス・関数
PHP実行結果をThymeleafに渡したり、認証エリアの機能である認証レコード値をPHPで取得するなど、PHPを使いやすくするため、独自クラス「$SPIRAL」を用意しています。
以下の関数を使用できます。
setTHValue($key, $value)
PHP実行結果をThymeleafにセットします。
$valueはオブジェクトも扱えます。
シンプルなデータ
PHP
<?php
$SPIRAL->setTHValue("seminar","LINE活用セミナー");
?>
body
<!-- LINE活用セミナー -->
<p th:text="${cp.result.value['seminar']}"></p>
オブジェクトを扱う場合
PHP
<?php
class Student{
public $name;
public $age;
}
$student = new Student();
$student->name = "鈴木一郎";
$student->age = "26";
$SPIRAL->setTHValue("student", $student);
?>
body
<!-- 鈴木一郎-->
<p th:text="${cp.result.value['student'].name}"></p>
<!-- 26-->
<p th:text="${cp.result.value['student'].age}"></p>
setTHValues($array)
PHP実行結果をThymeleafに複数個まとめてセットします。
$arrayは連想配列である必要があります。
PHP
$arrayparam = array("name"=>"スパイラル太郎","email"=>"spiral@spiral-platform.co.jp");
$SPIRAL->setTHValues($arrayparam);
body
<!-- 鈴木一郎-->
<p th:text="${cp.result.value['name']}"></p>
<!-- spiral@spiral-platform.co.jp-->
<p th:text="${cp.result.value['email']}"></p>
getEnvValue($key)
PHP環境変数を呼び出します。
PHP
//APIURL、APIキーを取得
$apiurl = $SPIRAL->getEnvValue("apiurl");
$apikey = $SPIRAL->getEnvValue("apikey");
getAuthRecordByFieldId($fieldId)
認証エリアのPHPにて、認証レコード値を取得します。
$fieldIdには、値を取得するフィールドのID(1、2など)を指定します。
PHP
//認証レコード値を取得
$SPIRAL->getAuthRecordByFieldId("1");
フィールドのIDを確認する方法
アプリ管理>DB>フィールドから、IDを確認します。

getParam($paramName)
別のページからGETやPOSTで送信されてきた値やクエリパラメータの値を一つ取得します。
同じパラメータ名で送信されてきた場合、1つのみ取得します。
GETとPOSTで同じパラメータ名で送信されてきた場合、POSTで送信されたきた値を優先して取得します。
PHP
//パラメータを取得
$SPIRAL->getParam("seminar_id");
getParams($paramName)
別のページから送信されてきた配列やクエリパラメータの配列を取得します。
PHP
//パラメータを配列で取得
$SPIRAL->getParams("seminar_id");
getQueryParam($paramName)
ページURLのクエリパラメータの値を一つ取得します。
PHP
//パラメータを取得
$SPIRAL->getQueryParam("seminar_id");
getQueryParams($paramName)
ページURLのクエリパラメータの配列を取得します。
PHP
//パラメータを取得
$SPIRAL->getQueryParams("seminar_ids");
getPostParam($paramName)
別のページからPOSTで送信されてきた値を一つ取得します。
PHP
//パラメータを取得
$SPIRAL->getPostParam("seminar_id");
getPostParams($paramName)
別のページからPOSTで送信されてきた配列を取得します。
PHP
//パラメータを取得
$SPIRAL->getPostParams("seminar_ids");
フォームブロックのステップ取得
フォームのどのステップが表示されているかを取得します。
getRecordValue()
登録フォームまたは更新フォームの完了ステップにて、登録または更新した値を取得します。
PHP
$registForm = $SPIRAL->getRegistrationForm("登録フォーム識別名");
//完了ステップでのみ実行する
if ($registForm->isCompletedStep()) {
$record = $SPIRAL->getRecordValue();
$recordId = $record['item']['_id'];
$SPIRAL->setTHValue("newRecordId", $recordId);
}
APIエラーを取得する方法
SPIRAL ver.2のAPIで発生したエラーをページに出力する方法は以下の通りです。
PHP
if(array_key_exists('status', $data)){//APIのエラーが発生した場合、APIのレスポンスにstatusが200以外で返ってくるので、statusをチェック
if($data["status"] != 200){
$SPIRAL->setTHValue("APIERROR", $data["message"]);//APIのエラーをThymeleafにセット
}
}else{
$docbody = $data["item"]["docbody"];//データを取得
$SPIRAL->setTHValue("docbody", $docbody);//データをThymeleafにセット
}
body
<div th:if="${cp.result.isSuccess}">
<p th:text="${cp.result.value['APIERROR']}"></p><!-- APIエラー文言を出力 -->
<p th:text="${cp.result.value['docbody']}"></p>
</div>
<div th:if="${!cp.result.isSuccess}">
<p th:text="${cp.result.errorMessage}">error message</p>
</div>
ThymeleafでPHP実行結果を呼び出す方法
基本フォーマット
ThymeleafでPHP実行結果を出力するには ${cp.result} を使用します。
<div th:if="${!cp.result.isSuccess}">
<p th:text="${cp.result.errorMessage}">error message</p>
</div>
${cp.result}には、以下の情報が含まれます。
成功の場合
"result": {
"executionTime": "xxxms",
"isSuccess": true,
"value": {
"amount":"100",
"totalOrder": "60000"
}
}
エラーの場合
"result": {
"executionTime": "xxxms",
"isSuccess": false,
"errorMessage": "xxxxx"
}
JavaScriptに値を渡す方法
SPIRAL ver.2では、Thymeleafのth:inlineを使用して、JavaScriptに値を渡すことができません。
JavaScriptにPHPの実行結果を渡す場合、ページ内のhiddenなどに出力した値をJavaScriptで取得して渡します。
boby
<input type="hidden" id="seminar" th:value="${cp.result.value['seminar']}">
<script>
let seminar= document.querySelector("#seminar");
alert(seminar.value);
</script>
制約事項
実行時間を制限
PHP実行開始から30秒以内に処理が完了しない場合、以下のエラーを返します。
server time out
PHPの一部機能を制限
一部の関数、PHPクラス、およびパラメータについて、使用を制限しています。
制限している関数等については以下のリンク先をご参照ください。
PHP7.4で使用できない関数・PHPクラス・パラメータ一覧
PHP8.1で使用できない関数・PHPクラス・パラメータ一覧
制限している関数等を使用された場合、エラーを返します。
例)file_get_contents()
PHP7.4
file_get_contents() has been disabled for security reasons on line xx
PHP8.1
Call to undefined function file_get_contents() on line xx
ページのプレビューでの実行制限
ページのプレビュー画面では、PHPは動作しません。
サンプルプログラム
PHPを使用したサンプルプログラムをご案内します。
