Laravel」タグアーカイブ

[Laravel] Exceptionをcatchできない

LaravelのController内で以下のように例外を補足するコードを書いても例外を補足できなかった

try {
  hoge();
} catch (Exception $e) {
  var_dump($e);
  exit;
}

散々ハマってPHPの例外処理の仕様まで追ったが、結果的に以下の修正で解決した。

try {
  hoge();
} catch (\Exception $e) {
  var_dump($e);
  exit;
}

namespace内のExceptionを待ち受けるか、全体のExceptionを待ち受け取るかの違い。

[Laravel] 対話的にプログラムを実行する

概要

laravelのtinkerを用いて対話的にプログラムを実行する。tinkerはRuby on Railsで言うところのrails consoleで、Laravelを用いた環境に対するプログラムの発行を行うツールである

起動

artisanのあるディレクトリに移動し、以下のコマンドで起動できる

$ php artisan tinker
Psy Shell v0.8.6 (PHP 5.6.30-12~ubuntu16.04.1+deb.sury.org+1 — cli) by Justin Hileman

PHPプログラムの実行

tinkerを起動すると、対話的にプログラムを実行することができる

>>> 5 + 2
=> 7
>>> 2 ** 8
=> 256

当然PHPの標準ライブラリを利用することも可能

>>> strlen('hogehoge');
=> 8
>>> array_map(function($n) { return $n * 10; } , [2,4,6,8,10]);
=> [
     20,
     40,
     60,
     80,
     100,
   ]

複数行に跨ぐことも可能。書きづらいので基本的にワンライナーであるべきだとは思う。

>>> function sayHello($name) {
...   return "Hello, $name";
... }
>>> sayHello('sasaki');
=> "Hello, sasaki"

LaravelModelの操作

Userモデルが存在する時、tinkerを用いてUserの作成と取得を行う。

作成

>>> $user = new App\User();
=> App\User {#703}
>>> $user->email = 'hogehoge@fugafuga.com';
=> "hogehoge@fugafuga.com"
>>> $user->password = md5('hogehoge');
=> "329435e5e66be809a656af105f42401e"
>>> $user->save();
=> true

取得

>>> $user = new App\User();
=> App\User {#703}
>>> $user->first();
=> App\User {#714
     id: 1,
     email: "hogehoge@fugafuga.com",
     name: "",
     created_at: "2017-07-11 11:37:49",
     updated_at: "2017-07-11 11:37:49",
     deleted_at: null,
   }

所感

  • DBの内容確認したいけどSQL書くのが面倒という時にも使えそう
  • 実装したロジックの動作確認の戦力になりそう
  • Laravel関係なくPHPの簡単な動作確認なんかにも使えそう