HOME>WEBプログラム覚書>PHP extract()の使い方を探る
PHP extract()の使い方を探る
フレームワーク眺めていると、時々見かけるextract()。
慎重に使えば結構便利なのかも?
サンプルコード
ビューファイルからコントローラーの値を参照しやすくextract()を使ってみる。
sanitize.php
PHP
<?php
// サニタイズ用
// グローバル関数
function s($value)
{
return htmlentities($value, ENT_QUOTES, mb_internal_encoding());
}
?>
Controller.php
PHP
<?php
class Controller
{
private $data = null;
private $clean = null;
private $viewfile = "test.php";
public function __construct()
{
$this->data = $_POST;
$this->validate();
}
public function display()
{
extract($this->clean);
require_once($this->view_file);
}
private function validate()
{
/**
* $this->dataをバリデート
*
* バリデートOKのdataをcleanにセット
* viewでforeach等でまわす場合、
* keyもちゃんとバリデートしないと危ない。
*/
$this->setClean($data);
}
private function setClean($data)
{
$this->clean = $data;
}
}
?>
test.php
PHP
<?php
// test.php
echo s($User["name"]) . "<br />";
echo s($User["mail"]) . "<br />";
?>
クライアントコード
PHP
<?php
// クライアントコード
<?php
require_once("sanitize.php");
require_once("Controller.php");
$c = new Controller();
$c->display();
?>
<form>
<input type="text" name="data[User][name]" value="test" />
<input type="text" name="data[User][mail]" value="test@example.com" />
<input type="submit" value="送信" />
</form>
?>
実行結果
test
test@example.com
ビューファイルで$User["name"]と短くかけるのはいいですが、
$Userの出所がわかりずらいので
Controller.php
<?php
public function display()
{
$clean = $this->clean;
require_once($this->view_file);
}
?>
test.php
<?php
echo s($clean["User"]["name"]) . "<br />";
echo s($clean["User"]["mail"]) . "<br />";
?>
と書くのがやっぱり正解なのかも。
フレームワーク制作時以外、あまり使うことなさそう?
投稿日 |
2009年2月17日 01:55 |
カテゴリ |
PHP |
タグ |
サンプルコード | 関数 |
トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1166 |
コメント