2012年10月31日水曜日

PHPのスコープのお話についてのお話

こちらの記事をたまたま見て気になったので投稿。
PHPでforeachなどを使う時の注意点。ブロックスコープのお話。

確かにループで一時的に必要な変数にスコープが無いと都合が悪いのはその通りなんだけど、解決策にモヤモヤ…

スコープが欲しいところに無いなら作ればいいわけで

$fruits = array('banana', 'melon', 'orange');
function joinFruits($fruits) {
$result = '';
foreach ($fruits as $fruit) {
$result .= $fruit;
}
return $result;
}
$fruits_str = joinFruits($fruits);
var_dump($fruit); // => undefined variable error
var_dump($fruits_str); // => bananamelonorange
view raw fruits.php hosted with ❤ by GitHub

関数に入れればスコープが作れる。

もっと言えばクラスにすればいいと思う。

class Fruits {
var $_data;
public function __construct($data) {
$this->_data = $data;
}
public function join() {
$result = '';
foreach ($this->_data as $datum) {
$result .= $datum;
}
return $result;
}
}
$fruits = new Fruits(array('banana', 'melon', 'orange'));
var_dump($fruits->join()); // => bananamelonorange
view raw fruits.php hosted with ❤ by GitHub

1 件のコメント:

  1. このコメントはブログの管理者によって削除されました。

    返信削除