【PHP】PHPでString.Formatメソッドを実装
こんにちは、スズキです。
C#にString.Formatというメソッドがありますが、
PHPで開発をしていて「String.Formatメソッドが使いたいな・・・」と思って先日メソッドを作ったので今回は作成したメソッドを紹介します。
作成したメソッドは以下になります。
第二引数が「...$params」となっていますが、これはPHPの可変長引数の書き方です。
可変長引数はPHP5.6から導入された機能なので、上記メソッドを利用するにはPHPのバージョンが5.6以降である必要があります。
使い方ですが、
今後の改善案として
機会があれば実装して、追加のブログ記事を書くかもしれませんね。(多分しませんが・・・)
C#にString.Formatというメソッドがありますが、
PHPで開発をしていて「String.Formatメソッドが使いたいな・・・」と思って先日メソッドを作ったので今回は作成したメソッドを紹介します。
作成したメソッドは以下になります。
class Str extends \Illuminate\Support\Str
{
/**
* 指定された形式に基づいてオブジェクトの値を文字列に変換し、別の文字列に挿入します。
* @param $format
* @param ...$params
* @return mixed
*/
public static function format($format, ...$params)
{
if ($params === null) {
return $format;
}
$index = 0;
$retString = $format;
foreach ($params as $param) {
$pattern = "/\\{{$index}\\}/";
$retString = preg_replace($pattern, $param, $retString);
$index++;
}
return $retString;
}
}
第二引数が「...$params」となっていますが、これはPHPの可変長引数の書き方です。
可変長引数はPHP5.6から導入された機能なので、上記メソッドを利用するにはPHPのバージョンが5.6以降である必要があります。
使い方ですが、
$str = Str::format("名前:{0}、年齢:{1}歳、性別:{2}", "山田太郎", 20, "男性");
とすれば、$strの内容が「名前:山田太郎、年齢:20歳、性別:男性」になります。
今後の改善案として
- 小数点第何位までを表示するかを指定
- 右詰め、左詰め
- 0埋め
- 3桁毎のカンマ区切り表示(「12345 → 12,345」の置き換え)
機会があれば実装して、追加のブログ記事を書くかもしれませんね。(多分しませんが・・・)