前回の記事では、「投げ銭プラグイン」を開発するにあたってプラグインに必要なディレクトリ・ファイルの作成やプラグインヘッダの記述を行いました。今回の記事では、クラスの定義や定義したクラスの実行について説明します。
クラスとインスタンスの記述
「投げ銭プラグイン」であるEchizenya_PayPal_Express_Checkoutは、クラスの設計を担当する”class-echizenya-paypal-express-checkout.php”と、その設計を実行する”echizenya-paypal-express-checkout.php”に役割を分けています。まずはそれぞれについてざっくりとしたコードを記述します。
class-echizenya-paypal-express-checkout.phpの編集
[php]
class Echizenya_PayPal_Express_Checkout {
}
[/php]
class-echizenya-paypal-express-checkout.phpファイルでクラスの定義をします。クラス名は先頭の文字だけを大文字にした単語(キャピタライズ)をアンダーバーでつなぎます。
echizenya-paypal-express-checkout.phpの編集
[php]
require(__DIR__ . ‘/class-echizenya-paypal-express-checkout.php’);
if( is_admin() ) {
$e_pypl_expr = new Echizenya_PayPal_Express_Checkout();
}
[/php]
最初にクラスファイルを読み込んだ上で、echizenya-paypal-express-checkout.phpファイルでEchizenya_PayPal_Express_Checkoutクラスの実行をします。new演算子をつけてクラス変数($pypl_expr、メンバ変数とも言う)を定義すると、クラス内で定義したプロパティとメソッドが実行されます。
プロパティとコンストラクタの記述
クラス構文ではその中で定義したメソッドを、実行ファイルで用いることになります(今回の場合はechizenya-paypal-express-checkout.phpファイル)。そのメソッドを定義する前に、PHPの文法としてお約束ごとがあります。
プロパティの記述
[php]
class Echizenya_PayPal_Express_Checkout {
// プロパティ
private $options;
}
[/php]
Echizenya_PayPal_Express_Checkoutクラスの先頭でプロパティを宣言します。PHPのプロパティとはクラスの中で値を保持するために使う変数で、メンバ変数とも呼ばれることもあります。アクセス修飾子は”private”を使います。なぜそうなるかは理由は分かりませんが、Codexで例示されているのでそのまま使いましょう。
コンストラクタの作成
[php]
// コンストラクタ
public function __construct() {
}
[/php]
続いてPHPの文法に則ってコンストラクタを記述します。コンストラクタとは、クラスがインスタンス化されるタイミングで実行する特殊なメソッドのことを指します。
[php]
public function __construct() {
add_action( ‘admin_menu’, array($this, ‘paypalexpresscheckout_add_admin_menu’) );
}
[/php]
クラスがインスタンス化されるタイミングで実行されなければならないのは、add_action関数です。クラス構文を使っていないコードでは、add_action関数は他にも使われていますが、まず設定ページそのものを表示するためのメソッド(paypalexpresscheckout_add_admin_menu)についてコンストラクタの配列要素として定義します。add_action関数の第二引数は通常、フックで使われる関数名が用いられますが、クラス構文内で使われる場合は配列になります。