menu
書いてる野郎
orebike@gmail.com
複雑なHTML出力を持つレガシーコードを操作する場合にそこで使っている変数の由来を確かめつつ、自分の使う変数が外部に影響を与えないようにする必要がでてきて大変になる。 こういう場合に HTML 出力部分に関数スコープを導入できないかというやり方。
PHPのスコープは主に3つで
グローバルにぶちまけてあるスコープの変数をそのまま出す。
<?php $hoge = 123; ?> <html> <head> <title>hogehoge</title> </head> <body> <?= $hoge ?> </body> </html>
HTMLの出力部分を関数を利用して全体をラップしてしまう。 ラップするだけなので既存のコードに与える影響は軽微である。
<?php function show_hogehoge(){ ?> <?php $hoge = 123; ?> <html> <head> <title>hogehoge</title> </head> <body> <?= $hoge ?> </body> </html> <?php } ?> <?php show_hogehoge(); ?>
変数 $hoge
が関数スコープに閉じ込められた。
当然外部からパラメータも取ることができる
<?php function show_hogehoge($piyo){ ?> <?php $hoge = 123; ?> <html> <head> <title>hogehoge</title> </head> <body> <?= $hoge ?> <?= $piyo ?> </body> </html> <?php } ?> <?php show_hogehoge($piyo); ?>
HTML 出力に必要な変数のみを整理することができる。
HTML 加工用のヘルパー関数を作る。こいつも関数スコープに閉じ込めれば、外部へ影響は出ない。
<?php function show_hogehoge($piyo){ ?> <?php $hoge = 123; ?> <?php $fuga = function(){ echo "fuga"; }; ?> <html> <head> <title>hogehoge</title> </head> <body> <?= $hoge ?> <?= $piyo ?> <?php $fuga(); ?> </body> </html> <?php } ?> <?php show_hogehoge($piyo); ?>