wordpressユーザも抑えておきたいPHPの基礎「クラス」

2015.3.18 Wordpress

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';; 
   }
}

さらに、メソッドの名前を重複させることで、スーパークラスで定義されているメソッド上書きすることができます。引数をカブらせる必要があるという点に注意しましょう。

 

いかがでしたか。

自分でも、たまに思い出しておくと勉強になります。

基礎編ということで、さくっと終わる短編としてちょこちょこ書いていきたいです。

 

でわ!

プロフィール

東京でWebデザイナー・コーダーとして、フロントエンド的なことからグラフィックデザイン的なことをして、ごにょごにょと小さく活動中。Webクリエイターでは珍しい(?) HIPHOP, R&B好き。休日はよくカフェや漫画喫茶に出向いたりパン屋に行ったり、主に散歩しています。だいたいラーメンを食べて帰ってくる、そんな過ごし方です(都内のオススメ散歩コース募集中!)。デザインのトレンドやデザイン思考、HTML、CSSからSASS、Javascript、Wordpress構築などコーディングのTIPSなどをブログにアップしていきます。その他のことはtwitter( @satohmsys )まで。