PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


Class(クラス)に関する説明

今回はPHPのPersonClass(クラス)を通じて、Classの処理について詳しくお伝えしていきます。

・PHPにClass(クラス)に関する説明

PHPにClassを説明する前に、もう少しだけ「オブジェクト」について理解を深める説明をしておきます。

前回、オブジェクト指向プログラミングの「Objects/オブジェクト」とは「何かしらの処理を与える事が出来る対象」となる事をお伝えしました。

ただし、これではオブジェクトの外観しか理解したことにはなりません。

さらにオブジェクトについてお伝えすると、オブジェクトは次の要素から構成されます。

「オブジェクト = プロパティ + メソッド」

オブジェクトは何かしらの処理を与えることが出来る対象ですから、その対象の「属性」や「処理できること」を定義しなければなりません。

具体的にいえば「プロパティとメソッド」は次の要素から構成されます。

プロパティ = 変数・定数・データ
メソッド = 処理・関数

さて、今回はPHPにClass(クラス)が必要な理由と、Classを生成する際に理解しておくべき要素についてもお伝えしていきます。

・PersonClassのHelloメソッドを出力する

<?php

class Person {
  public $name;

  public function __construct($name) {
    $this->name = $name;
  }

  public function Hello() {
    echo "Hello! $this->name!\n";
  }
}

$anyone = new Person('PHP SCHOOL.biz');
$anyone->Hello();

?>

実行結果

上記では「PersonClass(クラス)」を生成しています。

実は、上記のPersonクラスには今回お伝えしている「プロパティ・メソッド」が含まれています。

では、ひとつずつ説明していきます。

1. PersonClass(クラス)を生成する

<?php

class Person {

}

?>

PHPではClassを生成する場合は、上記のよう予約語Classの後に好きなクラス名を記述します。

2. 定数publicで変数にアクセスする

<?php

class Person {
  public $name;

}

?>

Classの中のプロパティ(変数)は「カプセル化」されていて、自由に参照できないように設定されています。

なので、プロパティを外部から利用できるように「定数public」を通じて変数にアクセス出来るようにしています。

カプセル化とは?
カプセル化とは、オブジェクト指向プログラミングにおけるデータを外部から理解されないようにする概念のひとつです。

3. コンスタラクタメソッドを定義する

<?php

class Person {
  public $name;
  
  public function __construct($name) {
    $this->name = $name;
  }

}

?>

コンスタラクタメソッドとは、クラスが呼び出される時に最初に実行される処理のことです。
事前に定義した変数$nameをPersonクラスで利用できるようにしています。

4. Personクラスの挨拶をする処理を実装する

<?php

class Person {
  public $name;
  
  public function __construct($name) {
    $this->name = $name;
  }
  
   public function Hello() {
    echo "Hello! $this->name!\n";
  }

}

?>

Helloメソッドを定義し、$nameに代入された値を出力する処理を実装する。

この段階でPersonクラスの挨拶をしてくれる処理は実装完了です。

5. PersonClassのインスタンス(実体)を生成する

<?php

class Person {
  public $name;
  
  public function __construct($name) {
    $this->name = $name;
  }
  
   public function Hello() {
    echo "Hello! $this->name!\n";
  }

}

$anyone = new Person('PHP SCHOOL.biz');
$anyone->Hello();

?>

→ 実行結果

PersonClassはもうすでに実装済みですが、クラスのメソッドを利用する為には、クラスのインスタンス(実体)を生成する必要があります。

今まで記述してきたPersonClassは、いわば設計図でしかなくて、実際に処理をしてくれる部分の記述をしていません。

その為に「newメソッド」を利用して、Classのインスタンス化を行うことでPersonClassのメソッドを呼び出しています。

処理手順としては以下となります。

・newメソッドを利用して、Personクラスのインスタンスを生成する。
・その時に引数として今回は'Lancers'を定義する。
・変数$anyoneにインスタンスを代入し、$anyoneにPersonClassのメソッドを利用可能な状況にする。
・変数$anyoneが「アロー演算子->」を利用して、PersonクラスのHelloメソッドを呼び出している。

さて、どうだったでしょうか?

いままでの説明から「PersonClass」の処理手順や記述方法を理解できたと思います。

オブジェクト指向プログラミングの場合は「ひとつひとつの概念」に対する理解とプログラミングをする上でのルールの両方を理解しなければなりませんから、理解できるところからひとつずつ学習してみてください。