オーダーメイドコース
icon
icon

PHPのクラスでconstructを使う方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPのクラスでconstructを使う方法について現役エンジニアが解説しています。PHPのクラスのconstructとはクラスのコンストラクタで、インスタンス生成時に最初に実行される関数です。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

今回は、PHPのクラスでconstructを使う方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

PHPについてそもそもよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPのクラスでconstructを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

PHPのクラスにおけるconstructとは

PHPのクラスにおけるconstructとは、クラスのインスタンス生成時に最初に実行される関数です。

constructは新たにインスタンスを生成する度に呼び出され、引数を渡し、クラス内に定義したプロパティの初期化などに使用されます。

引数は複数定義可能です。

また、constructはPHP5以降から使用可能になりました。

 

constructの書き方

クラス内に

  • __construct()関数を定義する
  • クラス名と同じ名前の関数を定義する

ことで、PHPのコンストラクタとして扱うことが可能です。

<?php
class Human {
   private $name;
 
   // コンストラクタ
   public function __construct($name){
      $this->name = $name;
   }

   function show() {
      echo $this->name;
   }
}

上記の例では、Humanクラスをインスタンス化した際、引数に文字列を渡します。

そこで、クラス内に定義した$name変数に値が代入され、初期化を行うことができます。

 

アクセス修飾子は基本的に「public」で定義することが好ましいといえるでしょう。

その理由は、constructはインスタンスの生成時に必ず呼び出されるものであり、仮に、アクセス修飾子を「private」で定義した場合、クラスのインスタンス化が行えないからです。

また、Humanクラスが子クラスであった場合、親クラスのコンストラクタは、暗黙的に呼び出されることはありません。

「parent::__construct()」を呼び出すことで、親クラスのコンストラクタを明示的に実行します。

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは、上記のHumanクラスのインスタンスを生成して、コンストラクタを活用例をみていきます。

$human = new Human("山田太郎");
$human->show();

 

実行結果

山田太郎

上記のコードでは、new Human()でインスタンス化を行い、引数に文字列「山田太郎」を渡すことで$nameに文字列「山田太郎」が代入されます。

$nameの値を出力する関数show()を呼び出すことで、出力結果は「山田太郎」となるでしょう。

 

執筆してくれたメンター

平野大輝(ひらのだいき)

スキル:PHP・Java・JavaScriptを用いて様々なアプリを開発するWebエンジニア。

 

大石ゆかり

PHPのクラスでconstructを使う方法がよく分かったので良かったです!

田島悠介

ゆかりちゃん、これからも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。