拡張アプリ開発の基本

拡張アプリとして拡張機能を作ることにより、様々な拡張を1パッケージにして、ブログ単位でインストール出来るようになります。

拡張できる機能

  • 校正オプションの拡張
  • フック処理の拡張
  • Validatorの拡張
  • 独自GETモジュールの追加
  • 独自POSTモジュールの追加
  • テンプレートの挿入(テンプレートの拡張)

最低限必要なファイル

拡張アプリを作るためには、以下のファイルが最低限必要になります。

  • extension/拡張アプリのディレクトリ/ServiceProvider.php

このファイルがあれば、最小限の拡張アプリとして成立し、管理画面からインストールもできるようになります。このファイルは、アプリのバージョンや説明やインストール・アップデート時の処理や起動の初期処理を記述できるファイルになっています。詳しく見ていきましょう。

ServiceProvider.php

下のコードは、 ServiceProvider.php の 基本的なコードになります。

<?php

namespace Acms\Plugins\SamplePlugin;

use ACMS_App;

class ServiceProvider extends ACMS_App
{
    /**
     * @var string
     */
    public $version = '1.0.0';

    /**
     * @var string
     */
    public $name = 'SamplePlugin';

    /**
     * @var string
     */
    public $author = 'com.appleple';

    /**
     * @var bool
     */
    public $module = false;

    /**
     * @var bool|string
     */
    public $menu = false;

    /**
     * @var string
     */
    public $desc = 'サンプルのプラグインです。';

    /**
     * サービスの初期処理
     */
    public function init()
    {

    }

    /**
     * インストールする前の環境チェック処理
     *
     * @return bool
     */
    public function checkRequirements()
    {
        return true;
    }

    /**
     * インストールするときの処理
     * データベーステーブルの初期化など
     *
     * @return void
     */
    public function install()
    {

    }

    /**
     * アンインストールするときの処理
     * データベーステーブルの始末など
     *
     * @return void
     */
    public function uninstall()
    {

    }

    /**
     * アップデートするときの処理
     *
     * @return bool
     */
    public function update()
    {
        return true;
    }

    /**
     * 有効化するときの処理
     *
     * @return bool
     */
    public function activate()
    {
        return true;
    }

    /**
     * 無効化するときの処理
     *
     * @return bool
     */
    public function deactivate()
    {
        return true;
    }
}

プロパティ


プロパティ名 説明
$version バージョンを指定します。バージョン表記に決まりはありませんが、セマンティックバージョニングで付けるといいと思います。
$name 拡張アプリの名前を指定します。ここの名前が管理画面に表示されます。特に命名規則はありません
$author 作者を指定します。
$module ここにString(英数字)を指定すると、その名前でモジュールID作成の時、選択肢として表示されます。(非推奨)
$menu ここにString(英数字)を指定すると、そのURLで拡張アプリの管理画面が作成されます。
例: 'sample_index'
URL: /bid/1/admin/app_sample_index/
パス: themes/system/admin/app/sample/index.html
$desc 拡張アプリの詳細を記述します。管理画面で表示されます。

メソッド


メソッド名 説明
init インストールされた場合に動作し初期処理を記述できます。
例えば、Hook処理のバインドやテンプレートの挿入処理、autoloadの設定などに利用します。
checkRequirements インストール前のチェックに利用します。「false」を返すとインストールが出来ません。
install ルートブログのアプリ管理画面からアプリのインストール時に実行されます。データベースの初期化処理などに利用ください。
uninstall ルートブログのアプリ管理画面からアプリのアンインストール時に実行されます。データベースの削除処理などに利用ください。
update 拡張アプリのアップデート時に利用します。データ構造の変更などある場合に利用します。
activate 拡張アプリの有効時(ブログ単位)に動作します。インストール時にもここが実行されます。
deactivate 拡張アプリを無効化時(ブログ単位)に動作します。アンインストール時にもここが実行されます。

ポイント

  • extension/plugins/ の名前空間は 「Acms\Plugins」 です。
  • \ACMS_App を継承します。

これで拡張アプリ開発の基本は終了です。次から実際の拡張方法について見ていきます。