ホーム > 日記 > ifsetorって結局実装されたの?

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をしてくれる演算子ってわけじゃないので仕方ないですけどね。

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。