ifsetorって結局実装されたの?
<?php
$id = isset($_GET['id'])? $_GET['id']: null;
こんな感じのisset地獄から抜け出す手出しをしてくれるifsetorという(ネーミングが微妙な)関数が実装されるされないとうわさが昔ありました。
<?php
$id = ifsetor($_GET['id']);
function ifsetor(&$val, $def = null)
{
return isset($val)? $val: $def;
}
引数を参照にすることにより存在しない場合でもNoticeがでないなかなかCoolで便利な関数の予定でしたが。。。
C:\php5.3-win32-200809110205>php -v
PHP 5.3.0alpha3-dev (cli) (built: Sep 11 2008 02:02:06)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies
C:\php5.3-win32-200809110205>php -r "var_dump(function_exists('ifsetor'));"
bool(false)
PHP5.3なし
C:\php6.0-win32-200807280630>php -v
PHP 6.0.0-dev (cli) (built: Jul 28 2008 02:06:04)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2008 Zend Technologies
C:\php6.0-win32-200807280630>php -r "var_dump(function_exists('ifsetor'));"
bool(false)
PHP6.0なし
ifsetorの実装はなし。。。
その代わり(結果として代わりじゃないけど)PHP5.3では「?:」演算子が追加。
<?php $user_id = isset($_GET['user_id']) ?: "anonymous";と書いても期待した動作にはならないので、結局従来の書き方をするしかない。
で、結果的に「?:」をこういう場面で使うことはないんじゃないかと思っています。
そろそろ「?:演算子」について一言言っておくか – Do You PHP はてな
そもそもissetをしてくれる演算子ってわけじゃないので仕方ないですけどね。
カテゴリー: 日記