Laravelを使ってみた

Preview:

Citation preview

今、世界でもっとも注目されている

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/', 'App\Controllers\helloController');

namespace App\Controllers;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', 'App\Controllers\helloController');

namespace App\Controllers;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を利用• INSTALLcomposer create-project laravel/laravel --prefer-dist

その他気になる機能

• 認証(ソーシャル認証)• 暗号化• ハッシュ• ファサード• 多言語化• ペジネーション• キュ• セッション• テンプレート• ユニットテスト

使ってみてどうだった?

速度を重視するなら他の爆速と言われているフレームワークがいいかも…けど、Laravelは使いやすいし、楽し

かった。小規模システムや個人の何かを開発するにはいい。大概の機能や概念が溶け込んでいるので初心者に

おすすめできる。

おわり