今、世界でもっとも注目されている
Laravelを使ってみた
鄭在燮
なぜ選んだのか
未経験のフレームワークが使ってみた
かった。
そしてググる...
グーグルトレンド
だか...
日本国内では
選定理由もう一点あります。
日本語ドキュメントが充実
• 日本語翻訳率100%!
http://readouble.com/laravel/
しかも、韓国語のドキュメントもあった…
※ほんとうはベンチマークとか、情報
収集とか、しっかりやりましょう。
概要&豆知識
• マイクロソフトの.NETの開発に関わっていたTaylor Otwellが開発
• PHP5.3以上(最新バージョンは5.4以上)
• MITライセンス
• バージョン
Laravel1 2011年6月
Laravel2 2011年11月
Laravel3 2012年2月
Laravel4 2013年5月
Laravel5 2015年1月 ← 最初は4.3想定のものがメジャーバージョンアップになった
• ソースの読み書きが簡単
• 学習コストが低い
• ベンチマーク結果はよくない
http://blog.s-page.org/archives/563
• 大型システムで使われた実績は今のところない模様
• 英語圏の国ではCodeIgniter、FuelPHP、CakePHPとよく比較されている
• 2014年における最も有望なPHPフレームワークの1つとして挙げられた
http://www.sitepoint.com/best-php-frameworks-2014/
• ドキュメント翻訳&日本にLaravelを浸透させている先駆者はHirohisa Kawaseさん
https://www.facebook.com/hirokws
• Laravel関連書籍
http://qiita.com/mukaken/items/2058a193ee0ce6fbfd30
機能
認証(Auth)、キャッシュ、Eloquent、MySQL、
PostgreSQL、SQlite、SQLServer、マイグレーション、
IoCコンテナ、Config、Formヘルパー、HTMLヘル
パー、URLヘルパー、ルーティング、コントロー
ラー、モデル、ビュー、モデル間のリレーション
シップ、リダイレクト、レスポンス、String(文字列)
ヘルプ関数、バリデーション、ユニットテスト、
Bladeテンプレートエンジン、DB Seeding、キュー、
メール、ファサード(Facade)、コマンドライン、拡
張性
キャッシュ
• Memcached、Redis、APCなどのIn-MemoryキャッシュシステムがなくてもLaravelではキャッシュが
使える
Cache::put('key', 'value', $minutes);
Cache::has('key')
Cache::get('key');
Cache::forever('key', 'value');
• Filesystemに保存となるので本格的に使う場合は、In-Memoryキャッシュシステムをおすすめ
Redis
• Composerによりpredisをインストールする必要がある。
'redis' => [
'cluster' => true,
'default' => ['host' => '127.0.0.1', 'port' => 6379],
],
$redis = Redis::connection();
$redis->set('name', 'Taylor');
$redis->get('name');
MySQL
• 設定と使い方がとても簡単
'mysql' => [
'read' => [
'host' => '192.168.1.1',
],
'write' => [
'host' => '196.168.1.2‘
],
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
DB::select($sql, $param);
DB::insert($sql, $param);
DB::update($sql, $param);
DB::beginTransaction();
DB::rollback();
DB::commit();
Config
• 自由な書き方
‘AAA' => 2,
‘BBB' => array(
1 => 'station_name‘,
2 => 'dept_name‘
),
‘CCC' => app_path() . '/test.csv',
Config::get('code_define.AAA');
• 環境毎設定(Default&オーバーライド)
$env = $app->detectEnvironment(array(
‘dev’ => array(マシンのホスト名),
'stg' => array(マシンのホスト名),
));
RESTful
Route::controller('hello/', 'AppControllershelloController');
namespace AppControllers;
class helloController extends BaseController {
// getでhello/にアクセスされた場合
public function getIndex() {
〜
}
// getでhello/goodmorningにアクセスされた場合
public function getGoodmorning() {
〜
}
// postでhello/goodmorningにアクセスされた場合
public function postGoodmorning() {
〜
}
// getでhello/goodmorning/messageでアクセスされた場合
public function getGoodmorning($message) {
〜
}
}
Resourceful
Route::resource('hello', 'AppControllershelloController');
namespace AppControllers;
class helloController extends BaseController {
// getでhello/にアクセスされた場合
public function index() {
〜
}
// getでhello/createにアクセスされた場合
public function create() {
〜
}
// postでhello/にアクセスされた場合
public function store() {
〜
}
// getでhello/messageにアクセスされた場合
public function show($message) {
〜
}
// getでhello/message/editにアクセスされた場合
public function edit($message) {
〜
}
// putまたはpatchでhello/messageにアクセスされた場合
public function update($message) {
〜
}
// deleteでhello/messageにアクセスされた場合
public function destroy($message) {
〜
}
}
バリデーション
public $validate_rules = array(
'id' => 'required|numeric|min:1',
'text' => 'required',
'offset' => 'numeric',
);
accepted
そのフィールドがyes、on、もしくは1であることをバリデートします。これは「サービス利用規約」同意のバリデーショ
ンに便利です。
in:foo,bar...
フィールドが指定されたリストの中の値に含まれていることをバリデートします。
integer
フィールドが整数値であることをバリデートします。
required
フィールドに入力データーが存在することをバリデートします。
ip
フィールドがIPアドレスの形式として正しいことをバリデートします。
boolean
フィールドが論理値として有効であることをバリデートします。受け入れられる入力は、true、false、1、0、"1"、"0"で
す。
email
フィールドがメールアドレスとして正しいことをバリデートします。
その他、多数あります。
メール
'driver' => 'smtp',
'host' => 'yourhost.com',
'port' => 25,
'from' => array('address' => 'admin@text,com', 'name' => 'admin_user'),
Mail::send(array('text' => $template), $param, function ($message) use ($to_address, $title) {
foreach ($to_address as $key => $val) {
$message->to($val);
}
$message->subject($title);
$message->getSwiftMessage()->getHeaders()->addTextHeader('Reply-To', "admin <admin@test.com>");
});
拡張性
• Composerを利用
• INSTALL
composer create-project laravel/laravel --prefer-dist
その他気になる機能
• 認証(ソーシャル認証)
• 暗号化
• ハッシュ
• ファサード
• 多言語化
• ペジネーション
• キュ
• セッション
• テンプレート
• ユニットテスト
使ってみてどうだった?
速度を重視するなら他の爆速と言わ
れているフレームワークがいいかも…
けど、Laravelは使いやすいし、楽し
かった。小規模システムや個人の何か
を開発するにはいい。大概の機能や
概念が溶け込んでいるので初心者に
おすすめできる。
おわり

Laravelを使ってみた