2021/12/19

コンストラクタとは
コンストラクタとはクラスからインスタンスを生成するとき(オブジェクトがnewによって作成されるとき)に自動的に呼び出されるメソッドです。
このようなメソッドをマジックメソッドと呼びます。
オブジェクト作成時に初期化処理が必要な場合、コンストラクタ内に記述しておけば自動的に実行してくれます。
構文
<?php
class クラス名{
  アクセス修飾子 function __construct(){
    コンストラクタの処理内容;
  }
}
?>
【注意】
メソッド名の部分を__constructとすると、それがコンストラクタとなります。
このようにコンストラクタのメソッド名はPHPによりあらかじめ決められています。
コンストラクタのアクセス制限は「public」のみとなるので「private」や「protected」は使用できません。
また、コンストラクタに戻り値はありません。
メソッド名の部分を__constructとすると、それがコンストラクタとなります。
このようにコンストラクタのメソッド名はPHPによりあらかじめ決められています。
コンストラクタのアクセス制限は「public」のみとなるので「private」や「protected」は使用できません。
また、コンストラクタに戻り値はありません。
コンストラクトのサンプル
<?php
class Laravel
{
  private $version; //バージョン
  private $release; //リリース日
  // コンストラクタ
  public function __construct($version, $release)
  {
  $this->version= $version;
  $this->release = $release;
  }
  // バージョンを取得
  public function getVer()
  {
  return $this->version;
  }
  // リリース日を取得
  public function getRelease()
  {
  return $this->release;
  }
}
?>
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
//インスタンス生成
$framework1 = new Laravel('laravel4', '2013/05');
$framework2 = new Laravel('laravel5', '2015/02');
//クラスのメソッドにアクセスして変数に代入
$fwVer1 = $framework1->getVer();
$fwRelease1 = $framework1->getRelease();
$fwVer2 = $framework2->getVer();
$fwRelease2 = $framework2->getRelease();
//出力
print $fwVer1 . 'は' . $fwRelease1 . 'にリリースされました。<br>';
print $fwVer2 . 'は' . $fwRelease2 . 'にリリースされました。';
?>
</body>
</html>
Laravelで利用するケース
このようにコンストラクタは新しいオブジェクトが生成されると一番最初に実行されるメソッドです。
Laravelの開発では主にコントローラで認証をかけるときに使います。
コントローラのクラスの冒頭にauthミドルウェアのコンストラクタを記述します。
authミドルウェアを設定することで、ログインしている人だけがコントローラーのメソッドを実行できるということになります。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TaskController extends Controller
{
  /**
  * コンストラクタ
  * 継承したControllerクラスのmiddleware()を利用する
  */
  public function __construct()
  {
  // ログイン状態を判断するミドルウェア
  $this->middleware('auth');
  }
:
}
 
以上です。
PHP おススメ教材(by Udemy)

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。


