Archive for January, 2008

PHPで、オブジェクト内の配列の要素にアクセスしたいとき

Jan 21 2008 Published by funaki under いじる

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を併用していた。

No responses yet

MacBook Air、即買いは、、うーん

Jan 17 2008 Published by funaki under 感動する

以下の点が気になる。

  • USBが1個しかない
  • 有線のLANケーブルが挿せない
  • 値段が高い

USBに挿す可能性があるのはEMOBILE、マウス、USBメモリ、デジカメなのだがいちいち抜き差しするのかUSBハブを持ち歩くのか。ThinkPadはマウスがなくても長時間辛くないがマルチなタッチパッドはどうなんだろう。

全部無線で大丈夫、と言っていた友人もいたが個人的には1箇所、有線しかない環境があるので気になる。EMOBILEで事足りるか。

値段。SSDでどのぐらい変わるのかにもよるが、思っていたより高いし、とりあえず買ってみるにもちょっと。。30万円以内がよかったなぁ。

細かいところも気になるので早く実際に触ってみたい。

  • キータッチ&配列
  • 体感の重さ&ACアダプタの重さ

いずれにせよ、マルチタッチは面白そう。

この前出たメタリックなiMacにはかなり感動したものの散々迷って結局、Dellでデュアルモニタにした方が安くて画面が広くなる、と買わずじまい。薄型のノートにはかなり期待を寄せていただけにどうしたものか。うーん。

2 responses so far

PHPでクラス定数の一覧は取得できないのかな?

Jan 04 2008 Published by funaki under いじる

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なるメソッドを使うと配列で取得できました。おぉ。全然知らなかった。

One response so far