PHPなどプログラミング言語が解らなくてもカスタマイズが出来るのがwordpressのメリットですが、かゆい所に手を伸ばすためには多少の知識が必要です。
プラグインとかの動作を少しでも理解するためにもぜひとも覚えておきたい「クラス」について基礎的なことを書きます!
クラス(class)とは
処理をまとめた一つの道具箱のようなもの。
状況に応じて道具箱から道具を取り出して作業できるわけです。
道具をそのまま並べていてもいいのですが、(≒関数をいくつも書くだけ)それよりも、名前を付けた道具箱を準備して、道具を入れておいたほうが(≒クラス)便利ですよね。そういうことです。
クラス(class)の基礎
クラスは、「class」という文字から始まり、半角スペースを空けてクラス名を書きます。
クラスの中には「メンバ変数(プロパティ)」と「メンバ関数(メソッド)」、「定数」を格納することができ、目的としてはオブジェクトを定義するものということになるとも言えます。
オブジェクトを定義した後やクラス内で、これらのメンバ変数(プロパティ)やメンバ関数(メソッド)にアクセスするには「->(アロー演算子)」を使います。
オブジェクト
「オブジェクト」とは、クラスを元にして作られたコピーのことを言います。
値の重複による不本意な上書きを避けるためにオブジェクトを利用します。
インスタンス化
クラスのコピーを生成すること。new演算子を使います。
後に続く()に初期化のためのデータを引き渡すことも可能です。
//クラスここから class NewClass { //処理~~ //変数≒プロパティ $hensuu = 'aaa'; //関数≒メソッド function AAA(){ echo 'this is AAA'; } } //インスタンス化。$objが、いわゆるオブジェクトです。 $obj = new NewClass();
コンストラクタ(省略可)
クラスがインスタンス化された時に呼び出される特別なメソッド。
プロパティの値のセットなど初期化に使ったりします。
PHP4までは、クラス名と同等のメソッドをコンストラクタとしていましたは、PHP5からは「__construct」という統一名を採用しています。
class NewClass { private $hensuu; function __construct($hensuuReset){ $this->hensuu = $hensuuReset } } $newclass = new NewClass(0); //$hensuuを「0」に。
デストラクタ(省略可)
コンストラクタと反対に、インスタンスが破棄されるタイミングで実行されるのがデストラクタ。
「__destruct」という統一名で、PHP5以降でのみ使用可能です。
アクセス権
クラスのプロパティやメソッドには「アクセス権」を定義することができます。
public(デフォルト) 、protected、privateがあり、public以外はアクセスが制限されます。
protectedで定義された場合
そのクラス自身、継承したクラス、親クラスからのアクセスが可能
privateで定義された場合
そのクラスからのみアクセスが可能
class NewClass { public $hensuuPublic = 'aaa'; private $hensuuPrivate = 'private'; protected $hensuuProtected = 'protected'; function hensuuWriting(){ echo $this -> hensuuPublic; echo $this -> hensuuPrivate; echo $this -> hensuuProtected; } } $newclass = new NewClass(); echo $newclass->hensuuPublic; //表示 echo $newclass->hensuuPrivate; //fatal error echo $newclass->hensuuProtected; //fatal error $newclass->hensuuWriting; //3種とも表示
クラスの使い方
オブジェクトの作成
クラスは基本的にnewでオブジェクトを作成してから利用します。
class NewClass { function AAA(){ echo 'this is AAA'; } } var $newclass = new NewClass; //オブジェクト生成 echo $newclass->AAA(); // this is AAA
ですが、「::(スコープ演算子)」を使うことで、直接クラスの内容にアクセスできます。
echo NewClass::AAA(); // this is AAA
クラス内でメソッドからプロパティにアクセス
さきにチラッと出てきていますが、「$this(現在のクラスを示すための命令)」「->(アロー演算子)」を使うことで同じクラス内のプロパティを同じクラス内のメソッドから参照できます。
class NewClass { public $hensuu = 'public'; function AAA(){ echo $this->hensuu'; //AAAメソッドから$hensuuプロパティにアクセス } } $newclass = new NewClass(); echo $newclass->AAA(); //public と表示。
クラスの継承
他のクラスの機能を引き継いで新しいクラスを作ること。
引き継ぎ元(親クラス)を「スーパークラス」、継承した(子)クラスを「サブクラス」といいます。
継承には、「class クラス名」で普通に定義するのに続き、「extends スーパークラス名」と書きます。
class NewClass { //処理いろいろ function AAA(){ echo 'this is AAA'; } } class BrandNewClass extends NewClass { public function AAA(){ echo 'this is AAAAAAAAAAAAAA';; } }
さらに、メソッドの名前を重複させることで、スーパークラスで定義されているメソッド上書きすることができます。引数をカブらせる必要があるという点に注意しましょう。
いかがでしたか。
自分でも、たまに思い出しておくと勉強になります。
基礎編ということで、さくっと終わる短編としてちょこちょこ書いていきたいです。
でわ!