Solarized
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->setClean($data);
- }
-
- private function setClean($data)
- {
- $this->clean = $data;
- }
- }
- ?>
test.php
PHP
- <?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 |