「?:演算子」使える場面だってあるさ!
そろそろそろそろ「?:演算子」について一言言っておくかに一言言っておくか
最近、配列で利用する可能性のあるキーすべてをとりあえず初期化するようにしている。
<?php $_GET += array( 'user_id'=>null, 'enable_hoge'=>false, 'name'=>'nobody' ); ?>
なので、
<?php $user_id = $_GET['user_id'] ? : 'anonymous';
だがちょっと待って欲しい。それなら最初から
<?php $_GET += array( 'user_id'=>'anonymous', 'enable_hoge'=>false, 'name'=>'nobody' ); ?>
でいいじゃないか、と思った。
でも、こういうのもありうる。
<?php class Foo { protected $cfg = array(); public function __construct(array $config = array()) { $config += array( 'user_id'=>'anonymous', 'enable_hoge'=>false, 'name'=>'nobody' ); $this->cfg = $config; } public function setConfig($key, $value) { $cfg[$key] = $value; } public function getUserId() { $user_id = $cfg['user_id'] :? 'anonymous'; return $cfg['user_id'] :? 'anonymous'; } } $foo = new Foo(array('user_id'=>'hoge'); echo $foo->getUserID(), PHP_EOL; $foo->setConfig('user_id', null); echo $foo->getUserID(), PHP_EOL; /* result: hoge anonymous */ ?>