仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

コンストラクタの挙動

コンストラクタ内部で参照は意図しない働きをすることについて。
http://www.php.net/manual/ja/language.oop.newref.php

コンストラクタの戻り値がコピーだから参照が成り立たないんだから,専用のfactoryメソッドを用意して,new命令でインスタンスを作らないという規約で対応すればいいと思った。

factoryメソッドの中でglobal変数に参照を登録してしまって,ユーティリティ関数からその値を操作するようにすれば,いけるのではないかと思う。

function &newCTRL($controller_name)
{
    $controller =& ('Controller_' . $controller_name)::factory();
    return $controller;
}

$controller =& newCTRL('sample');

My('name')->C2('fullkana');
if (My('name')->is('maxlength', 4) === false) {
    My('name')->set('hoge');
}
$hoge = My('name')->get();