class Hoge
{
public $foo = array(1, 2, 3);
}
$foo = 'foo';
$hoge = new Hoge;
echo $hoge->{$foo}[1] . "\n";
echo $hoge->foo[1] . "\n";
あまり使わないと思いますが、、get_object_varsと組み合わせて使いたい場面が出たので。
{}が重要。
$fooを{}で囲わないと$foo[1]が優先されて”o”になってしまい(文字列にも添え字でアクセスできてしまうので)エラーになるようだ。
PHP Notice: Undefined property: Hoge::$o
最初はarray_sliceとcurrentを併用していた。
以下の点が気になる。
- USBが1個しかない
- 有線のLANケーブルが挿せない
- 値段が高い
USBに挿す可能性があるのはEMOBILE、マウス、USBメモリ、デジカメなのだがいちいち抜き差しするのかUSBハブを持ち歩くのか。ThinkPadはマウスがなくても長時間辛くないがマルチなタッチパッドはどうなんだろう。
全部無線で大丈夫、と言っていた友人もいたが個人的には1箇所、有線しかない環境があるので気になる。EMOBILEで事足りるか。
値段。SSDでどのぐらい変わるのかにもよるが、思っていたより高いし、とりあえず買ってみるにもちょっと。。30万円以内がよかったなぁ。
細かいところも気になるので早く実際に触ってみたい。
いずれにせよ、マルチタッチは面白そう。
この前出たメタリックなiMacにはかなり感動したものの散々迷って結局、Dellでデュアルモニタにした方が安くて画面が広くなる、と買わずじまい。薄型のノートにはかなり期待を寄せていただけにどうしたものか。うーん。
get_defined_constants()やget_class_vars()などでは取得できないので、、無理っぽい。⇒追記参照
class Test
{
const HOGE = 1;
public $hoge = 2;
}
print_r(get_class_vars('Test'));
一覧を取得したいがためにクラス変数でやろうとすると、上書きを阻止する手段がなくなってしまう。
PHP: Class Constants – Manual
ここのコメントにあるコードがちょっと近かったので参考にしてあれこれいじってみた。
class aClassConstant
{
final function __set($member, $value)
{
throw new Exception("You cannot set a constant.");
}
final function __get($member)
{
return $this->$member;
}
}
class Test extends aClassConstant
{
const HOGE = 1;
static public $test = 1;
// static protected $test = 1;
public function __construct()
{
// $this->test = 2;
}
}
echo Test::$test . "\n";
Test::$test = 3;
echo Test::$test . "\n";
$a = new Test;
$a->test = 2;
echo $a->test . "\n";
ここもちょっと参考に。
PHPの定数をどうするか – cloned.log
2007年1月5日追記:
Do You PHPのshimooka氏にトラックバックで教えてもらいました!ありがとうございます。
PHP: リフレクション – Manual
このクラスをnewしてgetConstantsなるメソッドを使うと配列で取得できました。おぉ。全然知らなかった。