filter_inputいる?
こーゆーのがある。
$s = filter_input(INPUT_POST, 'value'); var_dump($s);
興味深くはあるんだけど…デフォルトのフィルターは「FILTER_DEFAULT」で事実上のノーフィルタ。
警告が出ないのはそれはそれで便利なんだけど、それくらいなら@演算子でも足りるしねぇ。
あと、おいちゃん的には「型が不一致」なのは割合と好まないので。結果的に
// 数値 $i = (int)@$_POST['int']; var_dump($i); // 文字列 $s = (int)@$_POST['string']; var_dump($s);
って切りそろえちゃう事が多いかなぁ。
なので、filter_inputについては「特に使用について目くじらは立てないけど、おいちゃんは今のところあまりメリットを感じていない」かなぁ。
ちなみにデフォルトがある場合…PHP7ならNull coalescing(Null合体)演算子が便利。
$s = $_POST['value'] ?? 'def'; var_dump($s);
PHP5系なら、三項演算子かねぇ。
「参照」で値が入るなぞ
上述をいくつか見ていて偶然見かけた、少し「でんぢゃらす」なコード。
まずは普通のあたりから。
ini_set("display_errors", 1); error_reporting(-1); function hoge($awk) { } hoge($awk['a']); var_dump($awk);
実行結果
[gallu@www4142ue ~]$ php t.php
Notice: Undefined variable: awk in /home/furu/t.php on line 9
Notice: Undefined variable: awk in /home/furu/t.php on line 10
NULL
まぁ至極穏当かつ真っ当。
で、でんぢゃらすなコード。
ini_set("display_errors", 1); error_reporting(-1); function hoge(&$awk) { } hoge($awk['a']); var_dump($awk);
実行結果
…警告出ないわ勝手にkey差し込まれるわ、見方によっては大惨事(苦笑
まぁこれを書いてあるBlogでも推奨していなかったのでいないとは思うのですがすがすが。
「警告を出さないために引数を参照にする」とかいう破廉恥で奇天烈な行為は、絶対に避けましょうw
…privateの意味は?
これは別所で拝見した、コードの一部。
public function __get($name) { return $this->$name; } public function __set($name, $value) { $this->$name = $value; }
…これやって、プロパティをprivateにする意味あるのかしらん?
これならプロパティを素直にpublicにしたほうがマシな気がするのですが?
次点の可能性として「コーディング規約でプロパティはprivateに」ってのがある可能性が想起されるんだけど、そうだとしたら「こんなマジックメソッド書いちゃ駄目だよ」なんのためにそーゆーコーディング規約になってるか、その辺に思いを馳せないと、と思うのですます。
なので、上述マジックメソッドも「………なんで?」って感じなのですなぁ。