PHP研修 変数上書きスタイルの提案
- 2018年4月12日
- 技術情報
function someFunc() {
$variable = 7;
$variable = “Hello”; // OK
}
|
本ブログは、この変数の上書きを使うことで一時的な変数を削除できるという画期的な発見のご紹介です。
PHPは一般のプログラミング言語と比べますと、
その機能の制約から一時的な変数を作ることを余儀なくされることが多々あります。
例えばPHPでは、文字列内で変数を解析する事はできますが、関数を呼び出したり、以下のように計算式を記述することはできません。
echo “1個100円のりんごが5個と、1個180円のバナナが3本で、合計 {100*5+180*3}円 です。” ; /* 出力結果は計算されることなく、そのまま出力される。
1個100円のりんごが5個と、1個180円のバナナが3本で、合計 {100*5+180*3}円 です。
*/
|
$sum = 100 * 5 + 180 * 3;
echo “1個100円のりんごが5個と、1個180円のバナナが3本で、合計 {$sum
}円 です。” ;
/* 変数は解析してくれる。
1個100円のりんごが5個と、1個180円のバナナが3本で、合計 1040円 です。
*/
|
このように一時的な変数を何個も用意する場面が多くなってしまいます。
|
こちらはPHP5.4以前までは、関数から返ってきた配列に対して直接その内部の値を取り出すことができなかったため、一時的な変数に値を代入したあとで、本来の値を取り出す必要がありました。その際に同一の名前を使う考えは悪いだろうかとの質問です。(回答では悪くないけど、PHP5.4以降はもうできるようになったよとか、listの分割代入使うといいよといった提案がされております。)
function get_month_days($year, $month) { // 指定された月の最初の日のDateTimeの作成
$start = DateTime(“{$year}-{$month}”);
// 次の月の最初の日のDateTimeの作成 // 差分を計算 // 一日引いて特定の月の日数を求める。 } |
そこで上記を変数上書きスタイルで書き直しますと、以下になります。
function get_month_days($year, $month) { // 指定された月の最初の日のDateTimeの作成
$start = new DateTime(“{$year}-{$month}”);
// 次の月の最初の日のDateTimeの作成 // 差分を計算 // 一日引いて特定の月の日数を求める。 } |
- * $tempと比べて、どういった目的の変数なのかがはっきりする
- * 即座に上書きすることで、その後、$tempのように、他で使用されていないか検証する必要がなくなる。
yoshimoto at 2018年04月12日 10:00:50