【PHP】インスタンス化した際の初期値設定方法(コンストラクター)

Pocket

>クラスの使い方について(目次ページ)

前回、メンバ変数を宣言することでオブジェクトの設計を行いました。

class-step2-1

しかしこのままでは各項目には値が入っていませんね。膨大な情報を効率よく整理していくには値の入力についても効率よく設定できなければなりません。

今回はインスタンス化した際に、初期値を設定する方法を学びます。

インスタンス化した際に初期値を設定する「コンストラクター」について

まずは「コンストラクタ―」という言葉を知っておきましょう。「コンストラクター」とはオブジェクトをインスタンス化する際に、自動的に実行されるプログラムです。主にプロパティに値を設定する、初期値を設定するプログラムとして使用されています。
一般的な書き方は以下の通りです。

基本的には通常の関数宣言と同じく「function」で宣言しますが、「function」の後に一文字スペースを入れて「__construct( ){ }」と記述します。引数には設定したい変数、「{ }」内には各プロパティにどの変数、または定数を設定するかを記述します。
実際に書いてみたほうがイメージしやすいと思います。実例を見てみましょう。

プログラム初心者の方には「$this」と「->」が最初躓く部分かなと思います。
「$this」は自身のインスタンスを表しています。「$tanaka」とか「$suzuki」とか、同じクラスを持ったインスタンスが作成されるとおもいますが、「$this」とは各々の持っている情報を取り出す際に使用する変数です。
「->」はアロー演算子と呼ばれています。細かな説明はここではしませんが、プロパティやメソッドを呼び出す為に使用します。
「$this->name = $name」は「作成するオブジェクトの”name”プロパティに引数の”$name”を代入しなさい」という感じですね。

上記のプログラムを実行してみると…

class-step3-1

空だったプロパティに値が設定されましたね。このようにコンストラクターを設定し、クラス作成時の引数に値を設定することで初期値を設定することができます。

試しにもう一つ「$suzuki」というインスタンスを作成してみましょう。

「$suzuki」のインスタンスもできました。「$tanakata」と「$suzuki」、同じクラスから違う情報を持ったインスタンスはこのようにコンストラクタ―から設定することができます。

ちなみに、上記で説明した通り、コンストラクターとはあくまで「インスタンス化した際に実行されるプログラム」であり、初期値を設定する以外の用途にも使用することができます。例えばコードを下記のように変更してみます。

「echo $this->name.”さん、この世界にようこそ!”;」を追加してみました。このプログラムが、インスタンス化すると同時に実行されるはずです。

class-step3-3

このようにインスタンス化すると同時に「この世界にようこそ!」という文章が表示されました。作りたいプログラムによって処理を変えていきたいですね。

まとめ

ここまででクラスから実際にオブジェクトを作成するインスタンス化と、インスタンス化する際に初期値を設定するコンストラクターについて学びました。しかしオブジェクトとは「変数とメソッド(関数)がまとまったもの」でしたよね?まだこのクラス内にはクラスで共有するメソッドがないので、次回はメソッドの追加方法について学びたいと思います。

  • インスタンス化する際に、各プロパティに初期値を設定するにはコンストラクターを使用する。
  • コンストラクターはメソッドの一種で、「public function __construct( ){ }」と記述する。
  • コンストラクターはインスタンス化する際に自動的に実行されるプログラムである

 

エッグ

シェアする

コメントを残す

メールアドレスが公開されることはありません。

コメントする