メンバ変数とメンバメソッド

広告

ではクラスの中身を設計していきます。クラスには値を保存するためのメンバ変数と、クラスで行う処理を記述するメンバメソッドがあります。

メンバ変数はクラス内で値を保持するために使います。例えばテレビを表すクラスを設計した場合、現在表示しているテレビチャンネルを記憶しておくためなどです。メンバ変数の記述の仕方は下記の通りです。

class クラス名{
    public メンバ変数名;
}

メンバ変数名の前に付いているのはアクセス修飾子というもので3つ種類があるのですが取りあえず"public"としておいて下さい。

例としてテレビのクラスを設計し、現在のチャンネルを記憶するためのメンバ変数を1つ定義すると下記のようになります。

class Television{
  public $channelNo;
}

次にメンバメソッドは、設計したクラスで何を行いたいかをメソッドの形で記述します。例えばテレビのクラスの場合であれば、チャンネルを変えるとかに相当します。メンバメソッドの記述方法は下記の通りです。

class クラス名{
  public メンバ変数名;

  function メンバメソッド名(){
    // クラスの中で行う処理
  }
}

例としてテレビのクラスの中で現在のチャンネルを表示するメソッドを定義してみます。

class Television{
  public $channelNo;

  function dispChannel(){
    print('現在のチャンネルは'.$this->channelNo);
  }
}

取りあえず簡単なクラスとしてはこのような感じになります。

クラスの設計が終わったので実際に使ってみましょう。まずは"Television"クラスのオブジェクトを作成します。

$tv = new Television();

class Television{
  public $channelNo;

  function dispChannel(){
    print('現在のチャンネルは'.$this->channelNo);
  }
}

次にチャンネルに番号をセットしてみましょう。クラスから作成したオブジェクトを使って、メンバ変数にアクセスするためには下記のように行います。

$オブジェクト名->メンバ変数名;

先ほどの例の場合で試してみるには下記のようになります。

$tv = new Television();
$tv->channelNo = 8;

class Television{
  public $channelNo;

  function dispChannel(){
    print('現在のチャンネルは'.$this->channelNo);
  }
}

なお、クラス内でメンバ変数にアクセスするには"this"を使って下記のように記述します。

$this->メンバ変数名;

次に現在のチャンネルを表示させてみます。クラスから作成したオブジェクトを使って、メンバメソッドにアクセスするためには下記のように行います。

$オブジェクト名->メンバメソッド名();

先ほどの例の場合で試してみるには下記のようになります。

$tv = new Television();
$tv->channelNo = 8;
$tv->dispChannel();

class Television(){
  public $channelNo;

  function dispChannel(){
    print('現在のチャンネルは'.$this->channelNo);
  }
}
サンプルコード

では実際に試してみましょう。

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$tv = new Television();
$tv->channelNo = 8;
$tv->dispChannel();

class Television{
  public $channelNo;

  function dispChannel(){
    print('現在のチャンネルは'.$this->channelNo);
  }
}

?>
</body>
</html>

上記のファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

メンバ変数とメソッド

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。