Upload
jaeseop-jeong
View
149
Download
6
Embed Size (px)
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 <[email protected]>");
});
拡張性
• Composerを利用• INSTALLcomposer create-project laravel/laravel --prefer-dist
その他気になる機能
• 認証(ソーシャル認証)• 暗号化• ハッシュ• ファサード• 多言語化• ペジネーション• キュ• セッション• テンプレート• ユニットテスト
使ってみてどうだった?
速度を重視するなら他の爆速と言われているフレームワークがいいかも…けど、Laravelは使いやすいし、楽し
かった。小規模システムや個人の何かを開発するにはいい。大概の機能や概念が溶け込んでいるので初心者に
おすすめできる。
おわり