その1の続きです。前回の記事では、管理画面の設定ページを作成するためのプラグインについて、ファイルの構成とクラスの概要を大まかに説明しました。今回は、そのMySettingsPageクラスについて具体的に定義します。
プロパティの定義
[php]
class MySettingsPage {
private $options;
}
[/php]
MySettingsPage.phpにおいてプロパティ(メンバ変数)を定義します。プロパティとはプログラミング全般で使われる変数と似た概念で、”$options”は設定ページで入力した値を保持します。
また$optionsの前についている”private”はアクセス修飾子と呼ばれ、同一クラス内でのみアクセスが可能であることを示します。他に”public(他のクラスからアクセス可能)”、”protected(同一クラスとそのクラスから継承したクラスのみアクセス可能)”の2種類のクラスが存在します。
GitHubにてコードを公開しています。ご興味のある方は参考にしてください。
コンストラクタ(初期化メソッド)の定義
[php]
class MySettingsPage {
private $options;
public function __construct() {
add_action( ‘admin_menu’, array( $this, ‘add_plugin_page’ ) );
add_action( ‘admin_init’, array( $this, ‘page_init’ ) );
}
}
[/php]
前回の記事では定義したクラスをnew演算子でインスタンス化するファイル(MySettingsPage.php)があります。このインスタンス化をする際に必ず特別なメソッドをコンストラクタと言います。
コンストラクタをする意味
一般的に、PHPの文法としてのコンストラクタは外部リソースの初期化という役割を果たしています。今回のWordPressの例で説明すると、”admin_menuフック”や”admin_initフック”のタイミングで実行される関数を初期化するという意味になります。
なお、”admin_menuフック“や”admin_initフック“はそれぞれ「設定ページを表示する」、「設定ページを表示されるすべての関数の前で実行される」という意味を持ちます。つまりコンストラクタで行なっていること「初期化の初期化」とも言えます。
コンストラクタの第二引数について
add_action関数の第二引数は、”array($this, ‘独自関数名’)“となっています。この書き方はPHPではなく、WordPress特有の書き方です。add_action関数をクラス内で使用する場合は、配列の1番目の要素で”$this”として当該クラスを指し示し、2番目の要素で実行したい独自関数の名前を示します。
- register_activation_hook関数で使われている引数の解釈 サポートフォーラム WordPress
- add_action() | Function | WordPress Developer Resources
- 関数リファレンス/add action – WordPress Codex 日本語版
add_action関数についてクラスの中で使用しない場合は、第二引数に”array”や”$this”は使いません。単に関数名を使用するだけです。そこらへんの詳しい説明については、上記のCodexやWordPressフォーラムの内容を参考にしましょう。