Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

周辺知識

コンストラクタ

2017/06/02

コンストラクタとは

コンストラクタとはクラスからインスタンスを生成するとき(オブジェクトがnewによって作成されるとき)に自動的に呼び出されるメソッドです。

このようなメソッドをマジックメソッドと呼びます。

オブジェクト作成時に初期化処理が必要な場合、コンストラクタ内に記述しておけば自動的に実行してくれます。

 

構文

<?php
class クラス名{

  アクセス修飾子 function __construct(){

    コンストラクタの処理内容;

  }

}
?>
【注意】
メソッド名の部分を__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ミドルウェアを設定することで、ログインしている人だけがコントローラーのメソッドを実行できるということになります。

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');
  }
:
}

以上です。

 

-周辺知識