Laravel4、Carbonの紹介なのだ。
タグ: Laravel4
Laravelアドベントカレンダー11日目です。
10日目のmorisukeさんから引き続いて、愉快なおじさん、川瀬さんが再び登場です。(ああ、一人ではっちゃけて、その結果おいてきぼりさ。だから真面目に行くのだ。)
西から登ったおひさまが、ひがしーが辞める〜♫。というわけで、今日は天才カーボンです。
Laravelが依存しているパッケージの中でも、Carbonは使い方を知っていると便利です。既に取り込まれていますしね。
英語でも、Readmeの内容を見てもらえば、関数名などから、使い方は分かります。一番最初にサンプルとして提示されているコードをご覧ください。
printf("現在時刻は: %s", Carbon::now()->toDateTimeString()); printf("バンクーバーでの現在時刻は: is %s", Carbon::now('America/Vancouver')); //暗黙に__toString()される $tomorrow = Carbon::now()->addDay(); $lastWeek = Carbon::now()->subWeek(); $nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4); $officialDate = Carbon::now()->toRFC2822String(); $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London'); $worldWillEnd = Carbon::createFromDate(2012, 12, 21, 'GMT'); // 本当に死にたくないでしょう、ですからnowをモック出来ます Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1)); // ちゃんとUTCで実行されているか比較 if (Carbon::now()->gte($worldWillEnd)) { die(); } // やれやれ。通常の振る舞いに戻ろう。 Carbon::setTestNow(); if (Carbon::now()->isWeekend()) { echo 'パーティーだ!'; } echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'と表示 // …付け加えて、さらに'from now', 'after', 'before' // 時間に、seconds, minutes, hours, days, months, yearsも使えます。 $daysSinceEpoch = Carbon::createFromTimeStamp(0)->diffInDays();
要所を翻訳しましたが、メソッド名を見れば、何をしているかほぼ理解できます。。
多少、わかりづらいのがCarbon::setTestNow()
ですね。これは現在時間を設定することができるテスト用のメソッドです。日付や時間が絡むテストはダミーで現在時間を抑える必要がありますが、Carbonでセットしておけば、それが他のCarbonメソッドで適用されるため、テストが非常にやりやすくなるというわけです。
解除するためには、引数に何も渡さず呼び出します。でも、テスト用の関数ですから、まず通常のコードで使用し、さらに解除することは無いでしょう。
インスタンスは日時を表すオブジェクトです。
$dt = new Carbon(); $dt = new Carbon()::now(); $dt = new Carbon('tomorrow'); $dt = new Carbon('next wednesday'); $dt = new Carbon('last friday'); $dt = new Carbon('this thursday');
もしくは記述的に作成することができます。
Carbon::create(2012, 9, 5, 23, 26, 11); Carbon::parse('first day of December 2000'); Carbon::parse('first day of May 2000');
年月日、時分秒にはプロパティでアクセスできます。
$dt->year $dt->month $dt->day $dt->hour $dt->minute $dt->second
こういう、情報も引き出せます。
$dt->dayOfWeek // 曜日を表す整数 $dt->dayOfYear // その年の何日目 $dt->weekOfYear // その年の何週目 $dt->daysInMonth // その月は何日あるか $dt->timestamp // タイムスタンプ $dt->age // 日付が誕生日の人が何歳か $dt->quarter // 第n/4期目か
ここまでが基本、他にも足し引き、差を求める、週末などのチェック、文字列への変換など、全部揃っています。
長いので、さわりだけご紹介しました。
では、明日12日目はkorotoroさんが、公式キャラクターを作ります!利権を下さい!!既得権益に憧れているおじさんでした。