LoginSignup
6
6

More than 5 years have passed since last update.

Yiiの内部にひっそりと佇むutilsディレクトリにお気づきだろうか、マニュアルでもろくに触れられない地味な機能がここに詰まっている

CVarDumper

その名の通りのver_dump。ただしちょっと便利になっている

source
<?php
    CVarDumper::dump($class, 1);
dist
TestCommand#1
(
    [defaultAction] => 'index'
    [CConsoleCommand:_name] => 'test'
    [CConsoleCommand:_runner] => CConsoleCommandRunner(...)
    [CComponent:_e] => null
    [CComponent:_m] => null
)

コールは正直冗長だけど、第2引数でdepthが指定できる。大きなクラスをvar_dump()しようとすると出力が超大すぎることがあるので結構ありがたい。

<?php
     $dump = CVarDumper::dumpAsString($class);

ダンプした結果を変数で受け取りたいというのはまれによくあるケースで「あれob_startとかでできたっけ…」みたいに思ったりもするがちゃんと用意してくれてる。

CPropertyValue

値を変換するスタティックメソッドを提供してくれるヘルパーだそうです。

source
<?php
  CPropertyValue::ensureInteger('10sec'); // 10
  CPropertyValue::ensureString(false); // 'false'
  CPropertyValue::ensureBoolean(true); // true
  CPropertyValue::ensureBoolean('hogehoge'); // false
  CPropertyValue::ensureBoolean('true'); // true
  CPropertyValue::ensureArray('(1,2,3)'); // array(1,2,3)

上記のような事をしてくれます。ensureHogeということで値の型を保証するということですがtrue/falseを文字列にしてくれたりパーレンで囲まれた文字列をArrayとして評価したりといろいろと気をつかってくれています。べつにキャストでいいかな

CFileHelper.php

ファイルに関するヘルパーです

source
<?php
  CFileHelper::getExtension('hoge/fuga.jpg'); // 'jpg'
  CFileHelper::getMimeType('hoge.xml'); // 'application/xml'

なんてちょっとしたことからファイル名で検索できるfindFiles()とか再帰コピーしてくれるcopyDirectoryRecursive()とかちょっと便利なものがあります。

CTimestamp

時間に関するいろいろ

source
<?php
    CTimestamp::getDayOfWeek(2012,12,9);  //0(曜日)
    CTimestamp::isLeapYear(2012); // true(うるう年判定)
    CTimestamp::get4DigitYear(85); //1985
    CTimestamp::get4DigitYear(12); //2012

曜日判定やらうるう年判定やら2桁年号の変換やらの小物からGMTとの時差とかdate()の再実装とか色々入ってます。

CDatetameParser

strtotime()とは趣の違った時間表記のパーサー

source
<?php
    CDateTimeParser::parse('2012年12月2日','yyyy年M月d日'); // 1354374000

上記のように文字列とフォーマットを渡すとそのようにパースしてタイムスタンプを返してくれます。

CMarkdownParser

実はデフォルトでMarkdownが利用できる

source
<?php
    $parser = new CMarkdownParser;
    $contents = $parser->safeTransform('#hoge'); // '<h1>hoge</h1>'

利用しているパーサーライブラリはphp Markdown Extra
細かく設定もできるようです

CFormatter

フォーマットの管理を担うことができます
これだけはインスタンスとして最初からYiiのコアに組み込まれていますのでYii::app()から呼びます

source
<?php
    Yii::app()->format->boolean(1); //Yes
    Yii::app()->format->formatEmail('hoge@hoge.co'); //'<a href="mailto:hoge@hoge.co">hoge/hoge.co</a>'
    Yii::app()->format->dateFormat = 'Y年m月d日 H時i分s秒';
    Yii::app()->format->formatDate(time());  //"2012年12月09日 04時17分44秒"

アプリケーション内で利用する共通の出力形式をFormatにもつことで統一化が図れます。特にYiiのViewで使うWidgetは勝手に色々と吐き出してくれるのでここは自然といじることになると思います。

というわけでutilsの下に眠る機能の一部を紹介しました。正直半分も使ったことありません。が、覚えてると地味ーに便利だったりすることもあったりなかったりするので覚えても覚えなくてもいいかもしれなくもない。そんなutilsです。

6
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6